STM32 外部中斷 易出錯總結

2021-06-16 14:40:39 字數 1893 閱讀 6707

前言:這些問題都是我之前在工作中遇到的,後來覺得需要總結,自己記憶不好,所以在這個給自己打個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。程式寫好以後發現始終無法進入中斷,開始查...