剛開始學習stm32微控制器時,對中斷優先順序的規則不是很明白,通過今天的學習,對這方面的內容有了新的了解,記錄下來以便日後檢視。
首先說一下stm32的中斷:
stm32有84個中斷,包括16個核心中斷和68個可遮蔽中斷,具有16級可程式設計的中斷優先順序。
stm32f103系列上面,又只有60個可遮蔽中斷(在107系列才有68個)
中斷的管理方法:
1.首先,對stm32中斷進行分組,組0~4。同時,對每個中斷設定乙個搶占優先順序和乙個響應優先順序值。
分組配置是在暫存器scb->aircr中配置:
即設定優先順序分組:void nvic_prioritygroupconfig(uint32_t nvic_prioritygroup);
2.然後對單個的中斷進行搶占優先順序和響應優先順序設定:
typedef struct
nvic_inittypedef;
nvic_inittypedef nvic_initstructure;
nvic_initstructure.nvic_irqchannel = usart1_irqn;//串列埠1中斷
nvic_initstructure.nvic_irqchannelpreemptionpriority=1 ;// 搶占優先順序為1
nvic_initstructure.nvic_irqchannelsubpriority = 2;// 子優先順序位2
nvic_initstructure.nvic_irqchannelcmd = enable;//irq通道使能
nvic_init(&nvic_initstructure);//根據上面指定的引數初始化nvic暫存器
對於某些剛學習的人來說對設定分組這一措施不太明白其意義,這裡我就說一下我的理解(分組的意義):分組之後,ip的位也就分配完畢了,原本ip就只有4位,一位上有兩種狀態,也就是0和1,2^4 = 16,也就是有16級可程式設計優先順序,分組後,搶占優先順序的位數和響應優先順序的位數確定,即可配置各個中斷的優先順序,另一方面也說明了,分組之後不要輕易再改變分組,否則設定好的各個中斷搶占優先順序和響應優先順序就會改變。
stm32中斷優先順序
cm3 核心支援 256 個中斷,stm32 並沒有使用 cm3 核心的全部只用了它的一部分。stm32 有 84 個中斷,包括 16 個核心中斷和 68 個可遮蔽中斷,stm32f103 系列上面只有 60 個 107 系列才有 68 個 下面針對stm32f103 系列說明。與 nvic 相關的...
stm32中斷優先順序 STM32中斷系統
stm32 中斷非常強大,幾乎每個外設都可以產生中斷,因此這裡我們單獨使用一章來介紹它,為後面介紹外設中斷做鋪墊。學習本章可以參考 stm32f10x中文參考手冊 9 中斷和事件章節,cortex m3 權威指南 中文 chpt08 nvic與中斷控制章節。中斷概念 在學習 51 微控制器時,我們就...
stm32 中斷優先順序(學習隨筆)
一 搶占優先順序與響應優先順序 1.高優先順序的搶占優先順序是可以打斷正在進行的低搶占優先順序中斷的。2.搶占優先順序相同的中斷,高響應優先順序中斷是不能夠打斷低優先順序響應中斷的。3.搶占優先順序相同的的中斷,當兩個中斷同時發生的情況下,哪個響應優先順序高哪個先執行。4.無論是搶占優先順序還是響應...