外部中斷概述
1、stm32的每個io都可以作為外部中斷輸入。
2、stm32的中斷控制器支援19個外部中斷/事件請求:
思考:stm32供io使用的中斷線只有16個,但是stm32f10x系列的io口多達上百個,stm32f103zet6(112),stm32f103rct6(51),那麼中斷線怎麼跟io口對應呢?請看下圖:
由上圖可知:
gpiox.0對映到exti0
gpiox.1對映到exti1
…gpiox.15對映到exti15
對於每個中斷線,我們可以設定相應的觸發方式(上公升沿觸發,下降沿觸發,邊沿觸發)以及使能,同一時間只能有乙個io口對映到一條中斷線,比如:gpioa.0映**exti0同一時間其他的gpio就不能對映在exti0這條中斷線上。
是不是16個中斷線就可以分配16個中斷服務函式呢?
io口外部中斷在中斷向量表中只分配了7個中斷向量,也就是只能使用7個中斷服務函式
從表中可以看出,外部中斷線5到9分配乙個中斷向量,共用乙個服務函式外部中斷線10~15分配乙個中斷向量,共用乙個中斷服務函式。
中斷服務函式列表:
外部中斷常用庫函式:
1、void
gpio_extilineconfig
(uint8_t gpio_portsource, uint8_t gpio_pinsource)
;//設定io口與中斷線的對映關係
exp:
gpio_extilineconfig
(gpio_portsourcegpioe,gpio_pinsource2)
;2、void
exti_init
(exti_inittypedef* exti_initstruct)
;//初始化中斷線:觸發方式等
3、itstatus exti_getitstatus
(uint32_t exti_line)
;//判斷中斷線中斷狀態,是否發生
4、void
exti_clearitpendingbit
(uint32_t exti_line)
;//清除中斷線上的中斷標誌位
exti_init函式:
void
exti_init
(exti_inittypedef* exti_initstruct);
typedef
struct
exti_inittypedef;
exti_initstructure.exti_line=exti_line2;
exti_initstructure.exti_mode = exti_mode_interrupt;
exti_initstructure.exti_trigger = exti_trigger_falling;
exti_initstructure.exti_linecmd = enable;
exti_init
(&exti_initstructure)
;
外部中斷的一般配置步驟:
gpio_init()
;
rcc_apb2periphclockcmd
(rcc_apb2periph_afio,enable)
;
void
gpio_extilineconfig()
;
exti_init()
;
nvic_init()
;
extix_irqhandler()
;
exti_clearitpendingbit()
;
外部中斷初始化和中斷函式部分**:
void
extix_init
(void
)void
exti3_irqhandler
(void
)exti_clearitpendingbit
(exti_line3);}
void
exti4_irqhandler
(void
)exti_clearitpendingbit
(exti_line4);}
void
exti0_irqhandler
(void
)exti_clearitpendingbit
(exti_line0);}
void
exti2_irqhandler
(void
)exti_clearitpendingbit
(exti_line2)
;}
外部中斷實驗
crotex m3 核心支援 256 個中斷,其中包含了 16 個核心中斷和 240 個外部中斷。stm32f10x 晶元有 84 個中斷通道,包括 16 個核心中斷和 68 個可遮蔽中斷,對於stm32f103系列晶元只有60個可遮蔽中斷,參考 stm32f10x 中文參考手冊 9 中斷和事件章節...
外部中斷實驗
需要新增的韌體庫檔案有 misc.c stm32f4xx exti.c stm32f4xx gpio.c stm32f4xx rcc.c stm32f4xx syscfg.c 五個。1 使能 io 口時鐘,初始化 io 口為輸入 首先,我們要使用 io 口作為中斷輸入,所以我們要使能相應的 io 口...
外部中斷與定時器中斷實驗
已知微控制器晶振頻率為12mhz,自行選取定時 計數器,定時 計數器工作方式自選,編寫程式,使p1.7端輸出週期為0.5ms方波。解題思路 假設方波訊號的占空比為50 已知條件可以得,機器週期為1us,所以決定採用t0定時,工作方式0,已知輸出週期為0.5ms,則每定時0.25ms計數使p1.7輸出...