自己动手从0到1学写RTOS学习指南

  1. 主页
  2. 自己动手从0到1学写RTOS学习指南
  3. 常见问题FAQ汇总
  4. 执行PendSVC进入HardFault

执行PendSVC进入HardFault

内容纲要

感谢同学 @133-hmshms 的提问

Q:我在看第十讲内容,然后调试并没有进入任务,而是进入HardFault

A:经查是执行pendsv_handler里面的BX LR后进入HardFault。你检查单步调试看看,我觉得问题主要是Pendsv_handler这里没处理好 ,PC,或者xPSR,SP,LR,某一个寄存器出错了。

有几个地方要特别注意:

  • 调用tTaskInit()时,各个参数要正确,特别是传递的堆栈配置参数
  • tTaskInit()中有关堆栈初始化部分。堆栈的初始化顺序一定要正确,各个初始化值要正确,绝对不能多也不能少。
  • PendSVC_Handler中各个汇编指令中涉及堆栈保存和恢复的代码绝对要正确。

如遇到问题,强烈建议拿课程源码对照着看,务必要仔细对照。因为有些同学犯了小错误,对照时又没对照仔细,最终查出来了少写了或者错写。

这篇文章对您有用吗?

我们要如何帮助您?

发表评论

电子邮件地址不会被公开。 必填项已用*标注