NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn;//外部中斷2
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x03;//搶占優(yōu)先級3
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;//響應(yīng)優(yōu)先級2
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能外部中斷通道
NVIC_Init(&NVIC_InitStructure);//配置 NVIC
NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;//外部中斷3
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;//搶占優(yōu)先級2
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;//響應(yīng)優(yōu)先級2
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能外部中斷通道
NVIC_Init(&NVIC_InitStructure);//配置 NVIC
NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;//外部中斷4
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;//搶占優(yōu)先級1
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;//響應(yīng)優(yōu)先級2
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能外部中斷通道
NVIC_Init(&NVIC_InitStructure);//配置 NVIC
}
exti.c文件總共包含5 個函數(shù)。一個是外部中斷初始化函數(shù)void EXTIX_Init(void),另外 4個都是中斷服務(wù)函數(shù)。void EXTI0_IRQHandler(void)是外部中斷0的服務(wù)函數(shù),負(fù)責(zé)KEY_UP按鍵的中斷檢測;void EXTI2_IRQHandler(void)是外部中斷2 的服務(wù)函數(shù),負(fù)責(zé)KEY2按鍵的中斷檢測; void EXTI3_IRQHandler(void)是外部中斷3 的服務(wù)函數(shù),負(fù)責(zé)KEY1按鍵的中斷檢測; void EXTI4_IRQHandler(void)是外部中斷4 的服務(wù)函數(shù),負(fù)責(zé)KEY0按鍵的中斷檢測; 下面我們分別介紹這幾個函數(shù)。
首先是外部中斷初始化函數(shù) void EXTIX_Init(void),該函數(shù)嚴(yán)格按照我們之前的步驟來初始化外部中斷,首先調(diào)用KEY_Init,利用第八章按鍵初始化函數(shù),來初始化外部中斷輸入的IO口,接著調(diào)用RCC_APB2PeriphClockCmd 函數(shù)來使能 SYSCFG 時鐘。接著調(diào)用函數(shù)SYSCFG_EXTILineConfig配置中斷線和GPIO的映射關(guān)系,然后初始化中斷線和配置中斷優(yōu)先級。需要說明的是因?yàn)槲覀兊腒EY_UP 按鍵是高電平有效的,而KEY0、KEY1和 KEY2是低電平有效的,所以我們設(shè)置KEY_UP 為上升沿觸發(fā)中斷,而KEY0、KEY1和KEY2則設(shè)置為下降沿觸發(fā)。這里我們,把按鍵的搶占優(yōu)先級設(shè)置成一樣,而響應(yīng)優(yōu)先級不同,這四個按鍵,KEY0的優(yōu)先級最高。
接下來我們介紹各個按鍵的中斷服務(wù)函數(shù),一共 4個。先看 KEY_UP 的中斷服務(wù)函數(shù)void EXTI0_IRQHandler(void),該函數(shù)代碼比較簡單,先延時 10ms 以消抖,再檢測KEY_UP 是否還是為高電平,如果是,則執(zhí)行此次操作(翻轉(zhuǎn)蜂鳴器控制信號),如果不是,則直接跳過,在最后有一句EXTI_ClearITPendingBit(EXTI_Line0);通過該句清除已經(jīng)發(fā)生的中斷請求。同樣,我們可以發(fā)現(xiàn) KEY0、KEY1和 KEY2的中斷服務(wù)函數(shù)和 KEY_UP 按鍵的十分相似,我們就不逐個介紹了。
這里向大家重申一下, STM32F4的外部中斷0~4都有單獨(dú)的中斷服務(wù)函數(shù),但是從5開始,他們就沒有單獨(dú)的服務(wù)函數(shù)了,而是多個中斷共用一個服務(wù)函數(shù),比如外部中斷 5~9的中斷服務(wù)函數(shù)為:void EXTI9_5_IRQHandler(void),類似的,void EXTI15_10_IRQHandler(void)就是外部中斷 10~15 的中斷服務(wù)函數(shù)。另外,STM32F4 所有中斷服務(wù)函數(shù)的名字,都已經(jīng)在startup_stm32f40_41xx.s里面定義好了,如果有不知道的,去這個文件里面找就可以了。
exti.h頭文件里面主要是一個函數(shù)申明,比較簡單,這里不做過多講解。
接下來我們看看主函數(shù),main函數(shù)代碼如下:
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置系統(tǒng)中斷優(yōu)先級分組2
delay_init(168); //初始化延時函數(shù)
uart_init(115200); //串口初始化
LED_Init(); //初始化 LED 端口
BEEP_Init(); //初始化蜂鳴器端口
EXTIX_Init(); //初始化外部中斷輸入
LED0=0; //先點(diǎn)亮紅燈
while(1)
{ printf("OK\r\n"); //打印 OK提示程序運(yùn)行
delay_ms(1000); //每隔 1s打印一次
}
}
該部分代碼很簡單,先設(shè)置系統(tǒng)優(yōu)先級分組,延時函數(shù)以及串口等外設(shè)。然后在初始化完中斷后,點(diǎn)亮LED0,就進(jìn)入死循環(huán)等待了,這里死循環(huán)里面通過一個printf函數(shù)來告訴我們系統(tǒng)正在運(yùn)行,在中斷發(fā)生后,就執(zhí)行相應(yīng)的處理,從而實(shí)現(xiàn)第八章類似的功能。
上一篇:STM32f4獨(dú)立看門狗實(shí)驗(yàn)代碼
下一篇:STM32f4按鍵輸入實(shí)驗(yàn)代碼(02)
推薦閱讀
史海拾趣
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- API調(diào)用小記(Touchdesigner和ESP32)
- 關(guān)于ESP32/8266使用async-mqtt-client庫的一些基本介紹
- 座椅、天窗、電動尾門應(yīng)用 國產(chǎn)車規(guī)級高壓霍爾效應(yīng)傳感器推薦
- 突發(fā)!又一車企車機(jī)“崩了”
- 寧德時代為陳立泉院士頒發(fā)“卓越貢獻(xiàn)獎”
- 一文速覽吉利雷神 AI 電混 2.0 發(fā)布會重點(diǎn)
- 2025年1-4月ADAS供應(yīng)商裝機(jī)量排行榜:頭部集中與國產(chǎn)突圍并存
- 國內(nèi)飛行汽車無線通信測試成功,通信安全新突破
- SPAD席卷車載激光雷達(dá)市場
- 大聯(lián)大品佳集團(tuán)推出基于Microchip和ams OSRAM產(chǎn)品的10Base-T1S萬級像素大燈方案
- 哈曼推出采用三星Neo QLED技術(shù)的全新顯示屏
- Syntiant推出超低功耗汽車AI創(chuàng)新技術(shù) 提升車輛安全性和用戶體驗(yàn)
- 世強(qiáng)元件電商代理愛普生 年業(yè)績復(fù)合增長率201%
- 基于uC/OS-II和MSP430單片機(jī)的RTOS的技術(shù)分析
- 可怕的三星半導(dǎo)體
- MSP430 SPI接口(模式)通信
- SBS率先通過MPEG-H實(shí)現(xiàn)包含沉浸式和交互式音頻的節(jié)目播出
- Galaxy Fold二次發(fā)售:對折疊屏市場影響幾何?
- 三星S11內(nèi)部代號揭秘:搭載5nm芯片,升級挖孔屏
- 小米手環(huán)4 彩色熒屏、更久續(xù)航/支持藍(lán)牙5.0
- OPPO將在年底推出屏下攝像頭手機(jī)?
- 人民日報評:手機(jī)App過度索取權(quán)限何時休