在處理器中,中斷是乙個過程,即cpu在正常執行程式的過程中,遇到外部或者內部的緊急事件需要去處理,必須暫停當前處理事件,轉而去為處理更加緊急的事件,待處理完畢後再返回被打斷的程式處繼續往下執行。例如:當無人機超過了遙控器的控制範圍,需要立刻停止其他事件,進行下降事件,這是當下最緊急的事情。一般我們稱中斷為異常事件。且stm32所有的i/o都可以配置中斷。
中斷分為了兩個型別:內部中斷和外部中斷。並將所有中斷通過乙個表編排起來,下面是stm32中斷向量表的部分內容:
上圖-3到6這個區域被標黑了,這個區域就是內部中斷。內部中斷不能夠被打斷,不能被設定優先順序(也就是說優先順序是高於外部中斷之上的)。常見的內部中斷有以下幾種:復位(reset),不可遮蔽中斷(nmi),硬錯誤(hardfault),更多請參考上帝之手(stm32f***.h)
從第7個開始,後面所有的中斷都是外部中斷。包含線中斷,定時器中斷,串列埠,iic,spi等所有的外設中斷,可配置優先順序。外部中斷的優先順序分為兩種:搶占優先順序和響應優先順序。且中斷被響應先後順序:
1.搶占式優先順序不同:
高搶占式優先順序的中斷可以在具有低搶占式優先順序的中斷在執行的過程中可以被響應,即中斷巢狀。
2.搶占式優先順序相同:
當乙個中斷來到後,另乙個中斷正在被處理,後來的中斷被掛起,等當前的中斷處理完後才能被處理。(沒有中斷巢狀)
當兩個中斷同時到達,且沒有中斷正被執行,則中斷控制器根據它們的響應優先順序高低來決定先處理哪個。
3.搶占式優先順序,響應優先順序都相同:
根據它們在中斷向量表的排位順序決定先處理哪乙個。
每個可遮蔽中斷佔8bit只用了高四位進行搶占優先順序和響應優先順序的配置。且必須先呼叫void nvic_prioritygroupconfig(uint32_t nvic_prioritygroup);進行分組
nvic_prioritygroup_0 #搶占優先順序佔0bits, 響應優先順序佔4bits
nvic_prioritygroup_1 #搶占優先順序佔1bits, 響應優先順序佔3bits
nvic_prioritygroup_2 #搶占優先順序佔2bits, 響應優先順序佔2bits
nvic_prioritygroup_3 #搶占優先順序佔3bits, 響應優先順序佔1bits
nvic_prioritygroup_4 #搶占優先順序佔4bits, 響應優先順序佔0bits
stm32中斷配置思路
配置中斷優先組。
nvic_prioritygroupconfig(uint32_t nvic_prioritygroup);
配置中斷優先順序,開啟中斷通道。
nvic_init(nvic_inittypedef* nvic_initstruct);
配置使能相應外設的中斷。
不同外設的配置函式有差異。如外部中斷使用exti_init(),串列埠使用usart_itconfig()。
編寫相應中斷的中斷服務函式。
***_irqhanlder()(盡量在stm32fxxit.c中編寫,且函式名不能改變,因為事先已經定義好了,我們呼叫改變函式體即可)。
STM32 中斷系統
stm32中斷系統概述 中斷處理過程 nvic主要功能 內嵌向量中斷控制器 nested vectored interrupt controller nvic 外部中斷控制器exti exti控制器的主要特性如下 框圖 紅藍虛線為輸入線,藍色為產生中斷,紅色為產生事件輸出脈衝訊號 2.stm32f1...
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個可遮蔽中斷。優先順序的判...