#include "exti.h"
#include "led.h"
#include "key.h"
#include "delay.h"
#include "usart.h"
//
//本程式只供學習使用,未經作者許可,不得用於其它任何用途
//mini stm32開發板
//外部中斷 驅動**
//正點原子@alientek
//技術論壇:www.openedv.com
//修改日期:2010/12/01
//版本:v1.0
//
//外部中斷初始化函式
void extix_init(void)
void exti0_irqhandler(void)
exti_clearitpendingbit(exti_line0); //清除exti0線路掛起位
} void exti9_5_irqhandler(void)
exti_clearitpendingbit(exti_line5); //清除line5上的中斷標誌位
}void exti15_10_irqhandler(void)
exti_clearitpendingbit(exti_line15); //清除line15線路掛起位
}
stm32中,每乙個gpio都可以觸發乙個外部中斷,但是,gpio的中斷是以組位乙個單位的,同組間的外部中斷同一時間只能使用乙個。比如說,pa0,pb0,pc0,pd0,pe0,pf0,pg0這些為1組,如果我們使用pa0作為外部中斷源,那麼別的就不能夠再使用了,在此情況下,我們智慧型使用類似於pb1,pc2這種末端序號不同的外部中斷源。每一組使用乙個中斷標誌extix。exti0 – exti4這5個外部中斷有著自己的單獨的中斷響應函式,exti5-9共用乙個中斷響應函式,exti10-15共用乙個中斷響應函式。
exti_inittypedef exti_initstructure;
nvic_inittypedef nvic_initstructure;
rcc_apb2periphclockcmd(rcc_apb2periph_afio,enable);//外部中斷,需要使能afio時鐘
key_init();//初始化按鍵對應io模式
中斷線以及中斷初始化配置
gpio_extilineconfig(gpio_portsourcegpioc,gpio_pinsource5);
exti_initstructure.exti_line=exti_line5;
exti_initstructure.exti_mode = exti_mode_interrupt;
exti_initstructure.exti_trigger = exti_trigger_falling;//下降沿觸發
exti_initstructure.exti_linecmd = enable;
exti_init(&exti_initstructure); //根據exti_initstruct中指定的引數初始化外設exti暫存器
s tm32中斷控制器支援20個外部中斷/事件請求: 線0-15:外部io口輸入中斷
線16:連線到pvd輸出
線17:連線到rtc鬧鐘事件
線18:連線到usb喚醒事件
線19:ethernet wakeup event
中斷模式 typedef enum
extimode_typedef;
中斷觸發型別
typedef enum
extitrigger_typedef;
nvic_initstructure.nvic_irqchannel = exti0_irqn; //使能按鍵所在的外部中斷通道0-4有單獨的中斷服務函式
nvic_initstructure.nvic_irqchannelpreemptionpriority = 0x02; //搶占優先順序2
nvic_initstructure.nvic_irqchannelsubpriority = 0x02; //子優先順序1
nvic_initstructure.nvic_irqchannelcmd = enable; //使能外部中斷通道
nvic_init(&nvic_initstructure); //根據nvic_initstruct中指定的引數初始化外設nvic暫存器
中斷服務函式
exti0 – exti4這5個外部中斷有著自己的單獨的中斷響應函式,exti5-9共用乙個中斷響應函式,exti10-15共用乙個中斷響應函式。
搶占優先順序和響應優先順序
stm32 的中斷向量具有兩個屬性,乙個為搶占屬性,另乙個為響應屬性,
其屬性編號越小,表明它的優先級別越高。
當兩個中斷同時到來,先響應搶占優先順序搞得中斷。
當兩個中斷搶占優先順序一樣,先進入響應優先順序高的中斷。
exti_clearitpendingbit(exti_line5)
中斷函式響應完中斷之後,要清除中斷線路掛起位
STM32學習 外部中斷
先聊聊題外話,學習stm32,我大多從了解功能 框圖到暫存器定義,然後在使用方法 配置步驟。其實配置時使用庫函式是相當方便的,甚至可以不用看暫存器,但為深入了解一下,有時還是會多看看,而了解其方法脈絡後再使用庫函式更方便,只需查相應的庫函式手冊即可。stm32的外部中斷資源豐富 使用靈活。在f1系統...
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...