stm32中斷或異常的執行順序

2021-10-22 16:33:01 字數 876 閱讀 7916

測試驗證的晶元是stm32f103rct6

首先檢視進入中斷或異常前後的暫存器資料(左邊是進入中斷或異常前,右邊是進入中斷或異常後):

上圖左邊是進入中斷前的暫存器值,右邊是進入中斷後的暫存器值,通過sp值的前後對比,可以看出在進入中斷後被壓了(0x20000330-0x20000310=0x20=32)32個位元組資料(因為stm32棧是滿遞減),這32個位元組資料分別是8個暫存器的值,它們分別是

怎麼驗證是這8個暫存器呢?開啟memory視窗,輸入位址0x20000310,得到如下結果:

每4個位元組一組,又因為stm32是小端模式,所以這8組資料分別是:

是不是差不多一樣??細心的小夥伴可能會發現pc暫存器的值跟第一張圖左邊裡面的值不一樣,乙個是0x0800017e,而在memory視窗上顯示的是0x08000180

0x1000: mov r0, pc ; r0 = 0x1004
檢視彙編,如下所示:

當前指令位址是0x0800017e,下一條指令位址是0x 08000180

既然講到了pc指令,就再補充幾點知識點:

stm32中斷優先順序 STM32中斷系統

stm32 中斷非常強大,幾乎每個外設都可以產生中斷,因此這裡我們單獨使用一章來介紹它,為後面介紹外設中斷做鋪墊。學習本章可以參考 stm32f10x中文參考手冊 9 中斷和事件章節,cortex m3 權威指南 中文 chpt08 nvic與中斷控制章節。中斷概念 在學習 51 微控制器時,我們就...

STM32中斷巢狀

cortex m3核心支援256個中斷,其中包括16個核心中斷和240個外部中斷,且具有256級的可程式設計中斷設定,而stm32只用了其中一部分。stm32有84個中斷,包括16個核心中斷和68個可遮蔽中斷,具有16級可程式設計中斷優先順序。而我所使用的103系列只有60個可遮蔽中斷。優先順序的判...

STM32 中斷使用

stm32中斷有時候用多了容易亂,特此記錄一下,因為之前一直是m3 m0交叉用,韌體庫有些區別容易弄混,這裡說一下m3外部中斷的配置 步驟 1.將對應的io配置為輸入 2.將io對應的中斷的優先等級用nvic配置好 3.設定好對應io的中斷模式和觸發方式 4.將io所屬的中斷線設為中斷輸入源 1 以...