清/ts囸図 发表于 2018-3-7 17:08:50

FreeRTOS任务栈检测uxTaskGetStackHighWaterMark问题

本帖最后由 清/ts囸図 于 2018-3-11 15:14 编辑

有7个任务
任务1栈大小:configMINIMAL_STACK_SIZE*4(configMINIMAL_STACK_SIZE的宏定义是(unsigned short)128)
任务2栈大小:configMINIMAL_STACK_SIZE*4
任务3栈大小:configMINIMAL_STACK_SIZE*2
任务4栈大小:configMINIMAL_STACK_SIZE*3
任务5栈大小:configMINIMAL_STACK_SIZE*5
任务6栈大小:configMINIMAL_STACK_SIZE*5
任务7栈大小:configMINIMAL_STACK_SIZE*5

其中任务1和任务2是二选一的,由配置参数决定创建哪个任务,当前是创建任务1,并未创建任务2。
任务1是RS485通讯,Modbus协议,接收到上位机命令后,调用栈剩余检测uxTaskGetStackHighWaterMark(),将任务1,3~7的栈剩余检测结果回复给上位机。
问题来了,上位机收到的栈检测结果中,任务3的栈剩余448,怎么会这样呢?
有没有可能是因为没有创建任务2,os把任务2的栈也分配给了任务3?

页: [1]
查看完整版本: FreeRTOS任务栈检测uxTaskGetStackHighWaterMark问题