新手上路
- 积分
- 46
- 金钱
- 46
- 注册时间
- 2013-8-4
- 在线时间
- 0 小时
|
5金钱
//LED0任务
void led0_task(void *pdata)
{
while(1)
{
LED0 = !LED0;
delay_ms(300);
};
}
//LED1任务
void led1_task(void *pdata)
{
while(1)
{
LED1 = !LED1;
delay_ms(300);
};
}
void StkChk_task(void *pdata)
{
while(1){
OSTaskStkChk(LED0_TASK_PRIO,&Task1Stksize);
printf("led0_task:%ld+%ld\r\n",Task1Stksize.OSFree,Task1Stksize.OSUsed);
OSTaskStkChk(LED1_TASK_PRIO,&Task1Stksize);
printf("led1_task:%ld+%ld\r\n",Task1Stksize.OSFree,Task1Stksize.OSUsed);
delay_ms(1000);
}
}
创建了两个led任务,然后有一个单独的任务去检测这两个任务的堆栈大小
得到以下结果:
LED0的堆栈空间设置为64,OS_STK是unsigned int,128字节
LED1也是一样,但是测的结果LED0却是free+used=256,LED1怎么检测都是0
求解!!!
|
最佳答案
查看完整内容[请看2#楼]
1、在keil中unsigned int是4字节的!!!所以是256。
2、至于LED1为什么堆栈为0,你可以把调用OSTaskStkChk()函数后返回的错误打印出来看一下。看看是不是调用函数出错了。
|