-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文檔是? –