触发任务调度异常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