金牌会员
 
- 积分
- 1379
- 金钱
- 1379
- 注册时间
- 2013-1-11
- 在线时间
- 477 小时
|
1金钱
本帖最后由 aozhouduwang 于 2023-8-13 18:46 编辑
- void TaskList()
- {
- char *mytaskstatebuffer;
- // char mytaskstatebuffer[200];
- printf("--->Free heap: %d bytes\n", xPortGetFreeHeapSize()); /*打印剩余堆栈大小*/
- mytaskstatebuffer = pvPortMalloc(200); //申请内存,200个字节
- printf("================================================\r\n");
- printf("任务名\t任务状态\t优先级\t剩余栈\t任务序号\r\n");
- vTaskList(mytaskstatebuffer);
- printf("%s\r\n",mytaskstatebuffer);
- printf("'B'-阻塞, 'R'-就绪, 'D'-删除, 'S'-挂起或阻塞\r\n");
- if(mytaskstatebuffer!=NULL)vPortFree(mytaskstatebuffer); //释放内存
- }
复制代码
直接定义char mytaskstatebuffer[200]可以正常打印vTaskList,================================================
任务名 任务状态 优先级 剩余栈 任务序号
DataDeal_task R 4 44 5
xxxx R 3 100 7
xxxx R 1 104 6
IDLE R 0 86 2
Tmr Svc B 7 118 3
xx S 5 98 4
如果用内存申请mytaskstatebuffer = pvPortMalloc(200); ,则无法打印vTaskList
================================================
任务名 任务状态 优先级 剩余栈 任务序号
'B'-阻塞, 'R'-就绪, 'D'-删除, 'S'-挂起或阻塞
请问为什么会这样?pvPortMalloc钩子函数提示内存申请失败。那为什么直接定义数组就可以呢?不是应该在任务栈里面申请的吗
|
|