Cortex M及STM32中斷筆記

2021-10-08 04:27:46 字數 1373 閱讀 8257

①中斷向量表在stm微控制器的啟動.s檔案中,可以查詢到具體的中斷源與中斷服務函式

1)stm32兩個中斷同時到達會首先判斷搶占優先順序,搶占優先順序高的先執行,如果搶占優先順序相同,就會對比子優先順序,子優先順序高的先執行。

②搶占優先順序:打斷其他中斷的屬性,因為搶占所以會出現中斷巢狀(a中斷的服務函式在執行過程中被b中斷的服務函式打斷,執行完b後,a再繼續執行)。

③響應優先順序:當兩個中斷的搶占優先順序相同時,如果兩個中斷同時到達,則先處理響應優先順序高的中斷。

④如果核心正在執行c的中斷服務函式,則它可以被a打斷,因為a和搶占優先順序更高,b和c的搶占優先順序相同,所以b不能打斷c的執行。但是如果b和c同時到達,那麼b的響應優先順序比c高,所以b會首先執行,但是核心可以打斷比b高的中斷。

1)cortex-m有三個固定優先順序和256個可程式設計優先順序,最多有128個搶占優先順序

2)stm32精簡為16級優先順序,16個優先順序為4位二進位制,但是搶占優先順序和響應優先順序均為該暫存器分配,所以有5組分配方式

a.第零組:所有4位來配置響應優先順序,16種向量都具有不同響應優先順序

b.第一組:最高1位配置搶占優先順序,第三位配置響應優先順序,表示有2種級別的搶占優先順序,有8種響應優先順序,所以有8個中斷搶占優先順序為0,響應優先順序為0-7;有8個中斷搶占優先順序為1,響應為0-7

c.第二組:2位配置搶占優先順序,2位配置響應優先順序,所以有4中搶占優先順序,4中響應優先順序

d.第三組:高3位配置搶占優先順序,低1位配置響應優先順序。所以有8種搶占優先順序,2種響應優先順序

e.第四組:4位均配置搶占優先順序,沒有響應優先順序

3)有三個系統異常,優先順序是負數,高於所有異常。不可程式設計

a.復位、nmi、硬體fault

(1)freertos在stm32中中斷關閉呼叫 basepri暫存器。

1)mov r0, #0x60

2)msr basepri, r0

3)上述程式可以遮蔽優先順序低於0x60的中斷請求,;具體rtos實現中,將0x60左移4位,所以遮蔽了優先順序不高於0的中斷,即外設所有中斷。

1)freertos中開啟中斷是通過對basepri暫存器寫0進行的

2)mov r0, #r0

3)msr basepri, r0

設定mcu使用幾位優先順序,stm32使用的是4位

設定最低優先順序,stm32使用了4位優先順序,所以最低優先順序就是15(優先順序數字越小,優先順序越高),所以對於stm32來說該巨集定義設定就為15

這個巨集定義用來設定核心中斷的優先順序,主要是pendsv和systick

這個巨集定義用來這是freertos系統可管理的最大優先順序,比如設定為5,優先順序小於5的裝置不歸freertos管理

高於這個優先順序的中斷freertos是不能禁止的,中斷服務函式也不能呼叫freertos的api函式。

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 以...