7個(gè)中斷通道在NVRC中使用
7個(gè)中斷服務(wù)函數(shù)EXPORT EXTI9_5_IRQHandler
22個(gè)中斷線
中斷源為任意想要連接的GPIO,用那個(gè)連哪個(gè)SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);
配置NVRC—配置GPIO(打開SYSCFG時(shí)鐘)—連接中斷源到GPIO—配置中斷EXTI—編寫中斷服務(wù)函數(shù)
具體如下
STM32F4的每個(gè)IO都可以作為外部中斷的中斷輸入口,這點(diǎn)也是STM32F4的強(qiáng)大之處。STM32F407的中斷控制器支持22個(gè)外部中斷/事件請(qǐng)求。每個(gè)中斷設(shè)有狀態(tài)位,每個(gè)中斷/事件都有獨(dú)立的觸發(fā)和屏蔽設(shè)置。STM32F407的22個(gè)外部中斷為:
EXTI線0~15:對(duì)應(yīng)外部IO口的輸入中斷。
EXTI線16:連接到PVD輸出。
EXTI線17:連接到RTC鬧鐘事件。
EXTI線18:連接到USB OTG FS喚醒事件。
EXTI線19:連接到以太網(wǎng)喚醒事件。
EXTI線20:連接到USB OTG HS(在FS中配置)喚醒事件。
EXTI線21:連接到RTC入侵和時(shí)間戳事件。
EXTI線22:連接到RTC喚醒事件。
GPIO跟中斷線的映射關(guān)系圖:
庫(kù)函數(shù)配置外部中斷的步驟:
1) 使能IO口時(shí)鐘,初始化IO口為輸入
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(KEY1_INT_GPIO_CLK|KEY2_INT_GPIO_CLK ,ENABLE);
GPIO_InitStructure.GPIO_Pin = KEY1_INT_GPIO_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(KEY1_INT_GPIO_PORT, &GPIO_InitStructure);
2) 開啟SYSCFG時(shí)鐘,設(shè)置IO口與中斷線的映射關(guān)系。
/*使用GPIO外部中斷時(shí)必須使能SYSCFG時(shí)鐘*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
配置GPIO與中斷線的映射關(guān)系(連接中斷源到GPIO引腳)
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);
將中斷線0與GPIOA映射起來,那么很顯然是GPIOA.0與EXTI0中斷線連接了。
3) 初始化線上中斷,設(shè)置觸發(fā)條件等。
EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_Line=EXTI_Line4; (選擇中斷源)(EXTI_Line0~EXTI_Line15)
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; (中斷模式)(分為中斷和事件event)
EXTI_InitStructure.EXTI_Trigger= EXTI_Trigger_Falling;(下降沿觸發(fā))(上升沿觸發(fā)Rising,任意電平觸發(fā)Rising_Fallingr)
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure); //初始化外設(shè)EXTI寄存器
上面的例子設(shè)置中斷線4上的中斷為下降沿觸發(fā)。
4) 配置中斷分組(NVIC),并使能中斷。
設(shè)置中斷線2的中斷優(yōu)先級(jí)。 在野火例程中,將NVRC設(shè)置成一個(gè)函數(shù)static void NVIC_Configuration(void) 在void EXTI_Key_Config(void)里調(diào)用。
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn; //使能按鍵外部中斷通道中斷線0-4每個(gè)中斷線對(duì)應(yīng)一個(gè)通道, 中斷線5-9共用EXTI9_5_IRQ,中斷線10-15共用EXTI15_10_IRQ
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; //搶占優(yōu)先級(jí)2,
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02; //響應(yīng)優(yōu)先級(jí)2
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中斷通道
NVIC_Init(&NVIC_InitStructure); //中斷優(yōu)先級(jí)分組初始化
5) 編寫中斷服務(wù)函數(shù)。
中斷服務(wù)函數(shù)的名字是在MDK中事先有定義的。這里需要說明一下,STM32F4的IO口外部中斷函數(shù)只有7個(gè),分別為:
EXPORT EXTI0_IRQHandler
EXPORT EXTI1_IRQHandler
EXPORT EXTI2_IRQHandler
EXPORT EXTI3_IRQHandler
EXPORT EXTI4_IRQHandler
EXPORT EXTI9_5_IRQHandler
EXPORT EXTI15_10_IRQHandler
中斷線0-4每個(gè)中斷線對(duì)應(yīng)一個(gè)中斷函數(shù),中斷線5-9共用中斷函數(shù)EXTI9_5_IRQHandler,中斷線10-15共用中斷函數(shù)EXTI15_10_IRQHandler。
常用的中斷服務(wù)函數(shù)格式為:
void EXTI3_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line3)!=RESET)//判斷某個(gè)線上的中斷是否發(fā)生
{ …中斷邏輯…
EXTI_ClearITPendingBit(EXTI_Line3); //清除LINE上的中斷標(biāo)志位
}
}
總結(jié)一下使用IO口外部中斷的一般步驟:
1)使能IO口時(shí)鐘,初始化IO口為輸入。
2)使能SYSCFG時(shí)鐘,設(shè)置IO口與中斷線的映射關(guān)系。
3)初始化線上中斷,設(shè)置觸發(fā)條件等。
4)配置中斷分組(NVIC),并使能中斷。
5)編寫中斷服務(wù)函數(shù)。
簡(jiǎn)單例程如下
#include "stm32f4xx.h"
#include "stm32f4xx_exti.h"
#include "stm32f4xx_rcc.h"
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_syscfg.h"
void main(void)
{
config();//初始化
while(1);
}
void config(void)
{
//中斷IO口初始化
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); //
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
//GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOD, &GPIO_InitStructure);
//中斷初始化
EXTI_InitTypeDef EXTI_InitStructure;
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOD, EXTI_PinSource13);
EXTI_ClearITPendingBit(EXTI_Line13);
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
EXTI_InitStructure.EXTI_Line = EXTI_Line13;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
//中斷配置初始化
/* Configures the nested vectored interrupt controller. */
NVIC_InitTypeDef NVIC_InitStructure;
/* Enable the USARTx Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
//中斷函數(shù)
void EXTI15_10_IRQHandler(void)
{
if( EXTI_GetITStatus(EXTI_Line13) != RESET )
{
EXTI_ClearITPendingBit(EXTI_Line13);//清中斷
}
}
上一篇:STM32F4XX中斷號(hào)定義
下一篇:STM使用過程中遇到問題集錦
推薦閱讀
史海拾趣
品質(zhì)是公司發(fā)展的生命線。AR RF/Microwave Instrumentation一直注重品質(zhì)管理,從原材料采購(gòu)到生產(chǎn)過程的每一個(gè)環(huán)節(jié)都進(jìn)行嚴(yán)格把控。同時(shí),公司還建立了完善的售后服務(wù)體系,確保客戶在使用過程中能夠得到及時(shí)、專業(yè)的支持。此外,公司還不斷進(jìn)行持續(xù)改進(jìn),通過引入新的生產(chǎn)技術(shù)和設(shè)備,提高生產(chǎn)效率和產(chǎn)品質(zhì)量。
在電子產(chǎn)品質(zhì)量參差不齊的市場(chǎng)環(huán)境下,EOREX公司始終堅(jiān)持品質(zhì)至上的原則。他們嚴(yán)格把控生產(chǎn)過程中的每一個(gè)環(huán)節(jié),確保產(chǎn)品的質(zhì)量和性能達(dá)到最高標(biāo)準(zhǔn)。同時(shí),EOREX還建立了完善的售后服務(wù)體系,為客戶提供及時(shí)、專業(yè)的技術(shù)支持和解決方案。這些舉措使得EOREX的產(chǎn)品在市場(chǎng)上贏得了良好的口碑和信賴度,為公司的發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
隨著技術(shù)實(shí)力的不斷提升,富芯森美開始積極拓展市場(chǎng)。公司憑借優(yōu)質(zhì)的產(chǎn)品和專業(yè)的服務(wù),成功打入消費(fèi)類電子、安防、工控、汽車電子等多個(gè)領(lǐng)域。同時(shí),富芯森美還注重品牌建設(shè),通過參加國(guó)內(nèi)外知名展會(huì)、舉辦技術(shù)研討會(huì)等方式,不斷提升品牌知名度和影響力。這些努力使得富芯森美在電子行業(yè)中逐漸嶄露頭角,成為行業(yè)內(nèi)的佼佼者。
隨著國(guó)內(nèi)市場(chǎng)的飽和,HCC Industries在2010年制定了國(guó)際化發(fā)展戰(zhàn)略。公司首先選擇在歐洲市場(chǎng)設(shè)立分支機(jī)構(gòu),利用其先進(jìn)的制造工藝和技術(shù)優(yōu)勢(shì),迅速打開了當(dāng)?shù)厥袌?chǎng)。隨后,HCC又相繼在亞洲和北美地區(qū)設(shè)立了多個(gè)辦事處和生產(chǎn)基地,實(shí)現(xiàn)了全球范圍內(nèi)的生產(chǎn)和銷售網(wǎng)絡(luò)布局。這一戰(zhàn)略不僅顯著提升了HCC的品牌影響力,也為其帶來了更加多元化的客戶群體和更廣闊的市場(chǎng)空間。
2015年,HCC Industries迎來了其發(fā)展歷程中的一個(gè)重要轉(zhuǎn)折點(diǎn)。在這一年,公司成功收購(gòu)了另一家具有強(qiáng)大研發(fā)實(shí)力和市場(chǎng)份額的微電子企業(yè)。此次并購(gòu)不僅使HCC在技術(shù)上得到了進(jìn)一步的補(bǔ)充和提升,還大大增強(qiáng)了其生產(chǎn)能力和市場(chǎng)覆蓋范圍。通過整合雙方資源,HCC在短時(shí)間內(nèi)實(shí)現(xiàn)了規(guī)模的快速擴(kuò)張和效益的顯著提升,進(jìn)一步鞏固了其在行業(yè)內(nèi)的領(lǐng)先地位。
設(shè)想一下:如果你驅(qū)車以每小時(shí)75英里的速度在高速公路上疾馳,一邊駕駛著2006才購(gòu)買的新車,一邊欣賞著Steve Miller的Greatest Hits樂曲。突然間,引擎管理系統(tǒng)或穩(wěn)定控制系統(tǒng)失效。如果出現(xiàn)這一幕,您不僅僅可能會(huì)遭遇嚴(yán)重或可能是致命的車禍,而 ...… 查看全部問答∨ |
本文重點(diǎn)分析標(biāo)準(zhǔn)的半磚2.3\'\' 2.4\'\'DC/DC轉(zhuǎn)換器。一般來說,同類型最好的肖特基二極管轉(zhuǎn)換器能夠提供150瓦或30安的輸出。但由于使用溫度環(huán)境變壞,轉(zhuǎn)換器實(shí)際能夠輸出的功率通常要低于這個(gè)數(shù)字。 … 查看全部問答∨ |
data 16 timing: 0. 100. 0 RAM ;100M三態(tài)橋:默認(rèn)。PIO_led:8位PIO_SWITCH:8位IDE 中程序:#include \"system.h\"#include \"altera_avalon_pio_regs.h\"# ...… 查看全部問答∨ |
一直都想了解一些大家的開發(fā)過程: 1. 如果你要試用一塊新的IC,你會(huì)怎樣做呢? 找資料 - > 找例程 - > 移植 還是 找資料 - > 自己編寫代碼 2. 做一個(gè)項(xiàng)目,你會(huì)先設(shè)計(jì)整個(gè)項(xiàng)目的構(gòu)架,還 ...… 查看全部問答∨ |
現(xiàn)在正在ARM11的板子的CE6上開發(fā)行業(yè)應(yīng)用軟件,涉及到基于Wifi (GSPI8686)的PPPoE撥號(hào)過程,發(fā)現(xiàn)無論如何撥不上去。 提示正在連接主機(jī),然后一會(huì)兒彈出PPPoE訪問集中器無響應(yīng),請(qǐng)稍后再試。 反之如果通過有線就可以成功撥號(hào) Wifi連接正常,也可 ...… 查看全部問答∨ |
|
Freescale iMX27 iMX515 Hardware Design 兼職【電子產(chǎn)品研發(fā)】【原理圖】【PCB Layout設(shè)計(jì)】 Allegro pcb layout 兼職 本人現(xiàn)從事(嵌入式ARM)電子硬件設(shè)計(jì)開發(fā)工作。 現(xiàn)想利用業(yè)余時(shí)間 兼職 PCB Layout、電路原理圖,或者代為設(shè)計(jì)電子產(chǎn)品(硬件)。 本人熟悉AVR系列單片機(jī),F(xiàn)PGA&nb ...… 查看全部問答∨ |
有誰(shuí)在CE下用過NdisMCmRegisterAddressFamily? 有誰(shuí)在CE下用過NdisMCmRegisterAddressFamily? 請(qǐng)問在CE下面能調(diào)用NdisMCmRegisterAddressFamily嗎?… 查看全部問答∨ |
驅(qū)動(dòng)里能創(chuàng)建線程嗎 把驅(qū)動(dòng)和一個(gè)win32程序聯(lián)系起來可以創(chuàng)建用戶線程嗎?… 查看全部問答∨ |
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 美光出貨全球首款基于 1γ(1-gamma)制程節(jié)點(diǎn)的 LPDDR5X 內(nèi)存,賦能移動(dòng) AI 應(yīng)用
- BOE(京東方)攜手AOC重磅推出首款愛瞳圓偏光電競(jìng)顯示器 樹立行業(yè)健康護(hù)眼新標(biāo)桿
- esp32 devkit v1下載marlin2.1,程序無法運(yùn)行的解決方案
- 【TVM系列八】microTVM在ESP32上調(diào)優(yōu)算子
- 驅(qū)動(dòng)算力的心臟革命:AI服務(wù)器電源三大技術(shù)躍遷與測(cè)試破局
- 恩智浦推出自主安全訪問解決方案,重新定義門禁
- Zephyr 環(huán)境搭建 - ESP32 篇
- ESP32讀取甲醛傳感器數(shù)據(jù)
- ESP32接入巴法云,開源安卓app、微信小程序控制
- ESP32單片機(jī)基礎(chǔ)知識(shí)
- 中海達(dá)“恒星一號(hào)”芯片實(shí)現(xiàn)小批量應(yīng)用
- 美國(guó)因華為事件請(qǐng)臺(tái)積電“喝咖啡”?劉德音稱絕無此事
- 銳成芯微將助力納思達(dá)推出低功耗國(guó)產(chǎn)芯片
- 特朗普為華為操碎了心!承諾英一“驚人的”貿(mào)易協(xié)議
- 高通展示人工智能圖景 AI的未來在哪?
- 三星/谷歌/OPPO/vivo和小米明年將推出8款折疊手機(jī)
- Fitness+功能細(xì)節(jié):會(huì)給智能化鍛煉建議
- 自己設(shè)計(jì)微信紅包,微信新功能你花錢做「皮膚」
- 蘋果稱將在iPhone中用自研基帶 為獲得更好信號(hào)表現(xiàn)
- 格力5G手機(jī)悄然上架 幾個(gè)問題問董大姐
- 請(qǐng)教ALTERA DDR控制器local_rdata_valid信號(hào)的問題
- JK觸發(fā)器組成3分頻電路
- CC2640R2F之ADC
- 基于NiosII的I2s驗(yàn)證系統(tǒng)搭建
- 誠(chéng)聘微電子,通信,自動(dòng)化,電氣,電力專業(yè)兼職技術(shù)人員
- 【平頭哥RVB2601創(chuàng)意應(yīng)用開發(fā)】實(shí)踐5-FOTA升級(jí)顯示下載進(jìn)度
- 職場(chǎng)兩年小白求指導(dǎo)
- 詢問:關(guān)于FPGA開發(fā)板申請(qǐng)
- 運(yùn)行LPCXpresso的最佳操作系統(tǒng)是Vista 或者Win7
- ARM開發(fā)板連接