触发任务调度异常xPortPendSVHandler后r14(LR)不为0xfffffffd

  • 这种情况出现在直接在PendSV_Handler里面调用xPortPendSVHandler。当PendSVC触发时,PendSV_Handler 调用xPortPendSVHandler,此时LR寄存器所指向即为PendSV_Handler(出现这种情况后LR寄存器为上一个调用这个函数的值)只需要将中断的C文件中原来的PendSV_Handler删除并重新定义宏即可(原因未知)
1
2
3
4
5
// void PendSV_Handler(void)
// {
//  xPortPendSVHandler();
// }
#define xPortPendSVHandler PendSV_Handler
  • 或者直接修改中断向量表所指向的Handler为FreeRTOS的即可![[20241106-1-1.png]]