1、时间片调度没有打开
FreeRTOS.h 文件中宏定义 configUSE_TIME_SLICING 没有定义为1
解决方案 :
#ifndef configUSE_TIME_SLICING
#define configUSE_TIME_SLICING 1
#endif
2、中断函数中定义了,SVC_Handler,PendSV_Handler,SysTick_Handler 三个中断,导致FreeRTOS中的 port.c 文件中的任务调度函数无法执行,任务无法切换。
解决方案:
删除自定义的 SVC_Handler,PendSV_Handler,SysTick_Handler,三个中断函数
在FreeRTOSConfig.h最后加上以下代码。
#define vPortSVCHandler SVC_Handler
#define xPortPendSVHandler PendSV_Handler
#define xPortSysTickHandler SysTick_Handler