-1
我有一个问题,当ARM stm32f10x进入中断服务程序时会发生什么:链接寄存器得到什么值?为什么?编程stm32f10x:链接寄存器在进入中断服务程序时会得到什么值?为什么?
我有一个问题,当ARM stm32f10x进入中断服务程序时会发生什么:链接寄存器得到什么值?为什么?编程stm32f10x:链接寄存器在进入中断服务程序时会得到什么值?为什么?
的PM0056 Cortex-M3 programming manual有答案
2.3.7异常进入和返回
...当处理器处于处理程序模式和 执行情况之一时
异常返回以下说明将EXC_RETURN 值加载到PC中:
•一条POP指令,其中包含PC
•带有任何寄存器的BX指令。
•与PC的LDR或LDM指令作为目标
EXC_RETURN是加载到LR上 例外项的值。当处理器完成异常处理程序时,异常机制依靠此值来检测 。 该值的最低四位提供有关返回堆栈 和处理器模式的信息。表17显示了EXC_RETURN [3:0]值和异常返回行为的 说明。
的特定值未记录等,或许比他们说这是一个无效的地址,努力了几秒钟,你会看到它主要是0xFFs。他们可能会或可能不会涉及到更多的细节,但我不认为我已经在任何ARM ARM或ARM TRM中看到过它......人们会认为它是针对核心实现的,我们关心的只是保留它就像任何其他lr值一样将它还给它。 –
为什么非常明显,因此逻辑可以告知异常从正常返回(bx或pop)返回,以便它们可以具有在向量表中具有C函数地址的功能,并且不像其他大多数处理器那样具有其他特殊开销。 –
您确实已阅读关于此主题的arm文档是? –