前言:這些問題都是我之前在工作中遇到的,後來覺得需要總結,自己記憶不好,所以在這個給自己打個mark。
一:觸發方式
stm32 的外部中斷是通過邊沿來觸發的,不支援電平觸發;
二:外部中斷分組
stm32 的每乙個
gpio
都能配置成乙個外部中斷觸發源,
stm32
通過根據引腳的序號不同將眾多中斷觸發源分成不同的組,比如:
pa0,
pb0,
pc0,
pd0,
pe0,
pf0,
pg0為第一組,那麼依此類推,我們能得出一共有16
組,stm32
規定,每一組中同時只能有乙個中斷觸發源工作,那麼,最多工作的也就是
16個外部中斷。
stm32 分組和對應中斷處理函式分配:管腳
中斷標誌
中斷處理函式分配
pa0~pg0
exti0
exti0_irqhandler
pa1~pg1
exti1
exti1_irqhandler
pa2~pg2
exti2
exti2_irqhandler
pa3~pg3
exti3
exti3_irqhandler
pa4~pg4
exti4
exti4_irqhandler
pa5~pg5
exti5
exti9_5_irqhandler
pa6~pg6
exti6
pa7~pg7
exti7
pa8~pg8
exti8
pa9~pg9
exti9
pa10~pg10
exti10
exti15_10_irqhandler
pa11~pg11
exti11
pa12~pg12
exti12
pa13~pg13
exti13
pa14~pg14
exti14
pa15~pg15
exti15
三:外部中斷的配置過程
l 配置觸發源 -gpio
觸發源為通過gpio
埠輸入,所以,要配置
gpio
的模式,輸入方式,輸入方式有以下幾種:
1.gpio_mode_ain ,模擬輸入(
adc模擬輸入,或者低功耗下省電)
2.gpio_mode_in_floating ,浮空輸入
3.gpio_mode_ipd = 0x28,帶下拉輸入
4.gpio_mode_ipu = 0x48,帶上拉輸入
l 引腳與外部中斷關聯
l 外部中斷afio
時鐘開啟
l 外部中斷配置
這個主要是中斷線路選擇,中斷觸發方式,中斷使能。
l 中斷優先順序配置 nvic
l 中斷處理函式的編寫。
四:外部中斷函式不能進入的原因分析
結合我工作中的遇到的問題可以分為:
1)gpio或者
afio
的時鐘沒有開啟;
2)gpio和配置的中斷線路不匹配;
3)中斷觸發方式和實際不相符合;
4)中斷處理函式用庫函式時,寫錯,經常可能出現數字和字母之間沒有下劃線;
5)外部中斷是沿觸發,有可能不能檢測到沿,比如 中斷線是低電平(浮空輸入),觸發是下降沿觸發,可能會出現一直是低電平,
高電平的時候是一樣的情況,電平持續為高電平;
6)沒有用軟體中斷來觸發外部中斷,呼叫函式exti_generateswinterrupt
;,因為軟體中斷先於邊沿中斷處理。
STM32外部中斷
一 基本概念 arm coetex m3核心共支援256個中斷,其中16個內部中斷,240個外部中斷和可程式設計的256級中斷優先順序的設定。stm32目前支援的中斷共84個 16個內部 68個外部 還有16級可程式設計的中斷優先順序的設定,僅使用中斷優先順序設定8bit中的高4位。stm32可支援...
stm32外部中斷
外部中斷程式配置流程 rcc 時鐘配置 void rcc configuration void 時鐘配置 開啟各路時鐘 rcc apb2periphclockcmd rcc apb2periph usart1 rcc apb2periph gpioa rcc apb2periph afio,enab...
stm32外部中斷
好久沒玩微控制器了,最近閒著沒事想拿出來玩玩,沒想到乙個stm32的外部中斷讓我花費了兩天時間,好的的挫折啊!終於下午除錯成功,下面來說一下我的除錯之路吧!硬體就是兩個按鍵,四個led,led事共陽極接法,按鍵一端接地一端接gpio口,通過按鍵中斷控制led。程式寫好以後發現始終無法進入中斷,開始查...