1. stm32中有兩個中斷優先順序:搶占式優先順序(佔先式優先順序)和響應優先順序(副優先順序),也就是主優先順序和副優先順序。其中搶占式優先順序決定是否有中斷巢狀(高佔先優先順序的中斷事件會打斷當前的主程式或者是中斷程式的執行,也就是搶斷式優先響應)。
2. 在佔先式優先順序相同的情況下,高副優先順序的中斷優先被響應。
3. 在佔先式優先順序相同的情況下,如果有低副優先順序中斷正在執行,那麼高副優先順序中斷要等待已經被響應的低副優先順序中斷執行結束後才能得到響應(非搶斷式響應,不能夠巢狀)。
4. 在佔先式優先順序相同的情況下,就沒有巢狀關係了!如果佔先式優先順序和副優先順序都相同的中斷同時到達,那麼就根據他們在中斷表中的位置來確定到底先執行哪個中斷。
5. 優先順序分組概念:cortex-m3定義8個位元來設定中斷源的優先順序,那麼如何分配這8個位元來設定佔先式優先順序和副優先順序就是優先順序分組的概念! 最高1位用於指定搶占式優先順序,最低7位指定響應優先順序;最高2位用於指定搶占式優先順序,最低6位指定響應優先順序….依次類推。
6. 而在stm32中,使用4位設定中斷優先順序設定。
7. 第0組:所有4位都用於指定響應優先順序;
8. 第1組:最高1位用於指定搶占式優先順序,最低3位用於指定響應優先順序;
9. 第2組:最高2位用於指定搶占式優先順序,最低2位用於指定響應優先順序;
10. 第3組:最高3位用於指定搶占式優先順序,最低1位用於指定響應優先順序;
11. 第4組:所有4位用於指定搶占式優先順序。
12. 注:(1)優先順序分組只能設定一次,一般在主函式中設定,在各個功能函式中不再設定;(2)設定的優先順序級數要在分組合理的取值範圍;(3)優先順序數字越小優先順序越高;(4)判斷優先順序先看搶占式優先順序,再看響應優先順序。一般搶占優先順序高的就是優先順序先響應。
13. 中斷部分明天再繼續。
STM32學習筆記 4
條件編譯就是編譯時候的一種預處理命令 ifndef ifdef define elseif endif就是這些命令,在stm32應用的時候寫在.h檔案中,目的是防止出現倆個.c檔案同時呼叫同乙個.h檔案出現編譯錯誤。一般這麼寫 ifndef led h define led h void led v...
STM32 學習日誌 第4天
學習了4天的stm32,用的是野火的板子,資料是野火的零死角玩轉系列,做點學習小總結,講講後面學習新外設的思路 1 st庫的使用流程 配置時鐘 初始化結構體賦值 初始化。在操作乙個不熟悉的外設時,需要多看官方幫助檔案和參考手冊,但最重要最有效的手段應該是在網路上搜尋該如何使用該外設,工作原理,工作模...
STM32 學習筆記(4)系統時鐘
cortex m3中,有個systick 系統時鐘,systick 是cm3核心的外設,相關定義在core cm3.h中。系統定時器內嵌在nvic中,是24位的向下遞減的計數器,每記一次數的時間是1 sysclk。一般設定sysclk 72m。而系統時鐘一般用於作業系統產生時基。與systick相關...