前言:
如题。近日在给项目移植FreeRTOS的时候,发现调用如下API函数会阻塞:
xTaskNotifyGive(xTaskGetHandle(Task_PrintCtrl_attributes.name));
首先猜测可能是xTaskGetHandle有问题导致。通过printf打印调试信息,发现执行xTaskGetHandle之前也会阻塞。那说明可能不是某个函数的问题,或者某个参数的问题。
可能是在调用API函数之前,任务还未被创建。实际上并不是,因为我的FreeRTOS代码是靠STM32CubeMX生成,按理来说不会有这种问题。
后面询问ChatGPT发现,可能是任务的堆栈大小太小了,STM32CubeMX默认生成的任务是128Words。
我随后尝试增加到512,编译运行,发现正常运行了。
我这个应该是任务比较特殊,一般可能128够用了。想了几天的函数或者参数有问题,但是又查不出来,没想到是这个问题。
还得是ChatGPT。