1.在移植FreeRTOS到STM32F103C8T6后进行测试,编写了下面一段代码,烧录后未看到预期现象。
2.进入调试模式后发现调用vTaskStartScheduler后卡在HardFault_Handler
3.经过上网搜索,进入HardFault_Handler是因为堆栈溢出,尝试增大堆栈大小后仍未解决。
有的文章提到中断优先级的问题,检查后仍未解决。还有的文章提到修改启动文件:
使用的是以下工程模板:
FreeRTOS移植STM32F103工程模板_weixin_44543366的博客-CSDN博客
已经在config.h中进行了以下宏定义:
#define vPortSVCHandler SVC_Handler
#define xPortPendSVHandler PendSV_Handler
#define xPortSysTickHandler SysTick_Handler
在这里无需修改
4.最终经过对比教程中的程序,发现函数名的定义不能放在函数内部,注释掉后解决
5.如果将TaskFunction_t start_task;语句写在函数内部,似乎会循环调用以下函数,直到造成堆栈溢出,原因未知。