2017-06-15 26 views
-1

我有一个问题,当ARM stm32f10x进入中断服务程序时会发生什么:链接寄存器得到什么值?为什么?编程stm32f10x:链接寄存器在进入中断服务程序时会得到什么值?为什么?

+0

的特定值未记录等,或许比他们说这是一个无效的地址,努力了几秒钟,你会看到它主要是0xFFs。他们可能会或可能不会涉及到更多的细节,但我不认为我已经在任何ARM ARM或ARM TRM中看到过它......人们会认为它是针对核心实现的,我们关心的只是保留它就像任何其他lr值一样将它还给它。 –

+0

为什么非常明显,因此逻辑可以告知异常从正常返回(bx或pop)返回,以便它们可以具有在向量表中具有C函数地址的功能,并且不像其他大多数处理器那样具有其他特殊开销。 –

+1

您确实已阅读关于此主题的arm文档是? –

回答

0

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]值和异常返回行为的 说明。

enter image description here

相关问题