2017-06-15 32 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

相關問題