记录一次rt-thread线程无法切换的问题

在调试一个按键程序的时候,发现程序无法正确运行,每次单步调试到
rt-thread_delay()的时候,程序出现卡死,最终停在如下所示的位置:
在这里插入图片描述
进一步观察的时候发现,堆栈指针处于主堆栈指针,而主堆栈指针(MSP)是复位后缺省使用的堆栈指针,用于操作系统内核及异常处理例程(包括中断服务例程),因此推测程序卡死在这里的原因是程序触发的中断,在响应一个中断后,CM3会自动定位一张向量表,并且根据中断号从表中找出ISR的入口地址,然后跳转过去执行。
在这里插入图片描述
而上述程序之所以会卡死,也是因为自己粗心忘记把中断服务函数移植过来,导致程序在根据中断号从表中找出中断服务函数时查找失败,从而导致了程序卡死。

发布了19 篇原创文章 · 获赞 6 · 访问量 1735

猜你喜欢

转载自blog.csdn.net/weixin_42616791/article/details/102647191