在一个APP.c中(win32下的),我定义了任务的栈的大小:
#define TASK_STK_SIZE 128
之后在该任务执行时,打印这个栈的首地址和尾地址:
printf("AppStk_1[0]=%p,AppStk_1[TASK_STK_SIZE-1]=%p\n",&AppStk_one[0],&AppStk_one[TASK_STK_SIZE-1]);
结果得到:
AppStk_1[0]=002DCC20
AppStk_1[TASK_STK_SIZE-1]=002DCD1E
也就是说这个空间大小为255,是128的2倍减1。
换用较小的值(如size为64),也是这样的2倍减1关系,这是为什么?
跟App_Stk的类型有没有关系,确定下类型看看
果然,OS_STK是uint16型的,难怪~~