스택을 하위 메모리에서 상위 메모리 순서로 쓰는 경우 (OS_STK_GROWTH == 0)
OS_STK TaskStack[TASK_STACK_SIZE];
OSTaskCreate(task, pdata, &TaskStack[0], prio);
스택을 상위 메모리에서 하위 메모리 순서로 쓰는 경우 (OS_STK_GROWTH == 1)
OS_STK TaskStack[TASK_STACK_SIZE];
OSTaskCreate(task, pdata, &TaskStack[TASK_STACK_SIZE-1], prio);
이렇게 쓰면 된다.
하지만 이런 경우 그때 그때 마다 바꿔서 코딩해줘야 함으로 코드의 이식성이 좋다고 말할 수는 없다.
이런 경우 if / else / endif 문을 쓰면 한결 좋아진다.
OS_STK TaskStack[TASK_STACK_SIZE];
#if OS_STK_GROWTH == 0
OSTaskCreate(task, pdata, &TaskStack[0], prio);
#else
OSTaskCreate(task, pdata, &TaskStack[TASK_STACK_SIZE-1], prio);
#endif
이런식으로.
댓글 없음:
댓글 쓰기