STM32 GPIO外部中斷總結
一、STM32中斷分組:
STM32 的每一個GPIO都能配置成一個外部中斷觸發源,這點也是 STM32 的強大之處。STM32 通過根據引腳的序號不同將眾多中斷觸發源分成不同的組,比如:PA0,PB0,PC0,PD0,PE0,PF0,PG0為第一組,那么依此類推,我們能得出一共有16 組,STM32 規定,每一組中同時只能有一個中斷觸發源工作,那么,最多工作的也就是16個外部中斷。STM32F103 的中斷控制器支持 19 個外部中斷/事件請求。每個中斷設有狀態位,每個中斷/事件都有獨立的觸發和屏蔽設置。STM32F103 的19 個外部中斷為:
線 0~15:對應外部 IO 口的輸入中斷。
GPIO引腳 | 中斷標志位 | 中斷處理函數 |
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 |
線 16:連接到 PVD 輸出。
線 17:連接到 RTC 鬧鐘事件。
線 18:連接到 USB 喚醒事件。
二:外部中斷的配置過程:
1、配置觸發源GPIO口:
因為GPIO口作為觸發源使用,所以將GPIO口配置成輸入模式,觸發模式有以下幾種:
a.GPIO_Mode_AIN ,模擬輸入(ADC模擬輸入,或者低功耗下省電)
b.GPIO_Mode_IN_FLOATING ,浮空輸入
c.GPIO_Mode_IPD ,帶下拉輸入
d.GPIO_Mode_IPU ,帶上拉輸入
GPIO_InitTypeDef GPIO_InitStructure;//定義結構體
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//使能時鐘
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;//選擇IO口 PE2
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//設置成上拉輸入
GPIO_Init(GPIOE, &GPIO_InitStructure);//使用結構體信息進行初始化IO口
2、使能AFIO復用時鐘功能:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
3、將GPIO口與中斷線映射起來:
GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource2);
4、中斷線上進行中斷初始化:
EXTI_InitTypeDef EXTI_InitStructure;//定義初始化結構體
EXTI_InitStructure.EXTI_Line=EXTI_Line2; //中斷線的標號 取值范圍為EXTI_Line0~EXTI_Line15
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//中斷模式,可選值為中斷 EXTI_Mode_Interrupt 和事件 EXTI_Mode_Event。
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//觸發方式,可以是下降沿觸發 EXTI_Trigger_Falling,上升沿觸發 EXTI_Trigger_Rising,或者任意電平(上升沿和下降沿)觸發EXTI_Trigger_Rising_Falling
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);//根據結構體信息進行初始化
5、中斷優先級配置:
NVIC_InitTypeDef NVIC_InitStructure;//定義結構體
NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn; //使能外部中斷所在的通道
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; //搶占優先級 2,
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02; //子優先級 2
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中斷通道
NVIC_Init(&NVIC_InitStructure); //根據結構體信息進行優先級初始化
6、外部中斷服務函數的編寫:
外部中斷函數分別為:
EXPORT EXTI0_IRQHandler
EXPORT EXTI1_IRQHandler
EXPOR T EXTI2_IRQHandler
EXPORT EXTI3_IRQHandler
EXPORT EXTI4_IRQHandler
EXPORT EXTI9_5_IRQHandler
EXPORT EXTI15_10_IRQHandler
中斷線 0-4 每個中斷線對應一個中斷函數,中斷線 5-9 共用中斷函數 EXTI9_5_IRQHandler,中斷線 10-15 共用中斷函數 EXTI15_10_IRQHandler。
void EXTI2_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line2)!=RESET)//判斷某個線上的中斷是否發生
{
中斷邏輯…
EXTI_ClearITPendingBit(EXTI_Line2); //清除 LINE 上的中斷標志位
}
}
三、關于使用GPIO口接按鍵進行外部中斷的配置說明:
使用按鍵進行外部中斷的時候,一般都需要進行按鍵延時消抖以及松手檢測的相關處理,中斷函數可以參看以下代碼:
void EXTI2_IRQHandler(void)
{
delay_ms(10);//延時消抖
if(KEY2==0) //按鍵真的被按下
{
LED0=!LED0;
}
while(KEY2!=0);//等待松手
EXTI_ClearITPendingBit(EXTI_Line2); //清楚中斷標志位
}
當然,如果你的按鍵是允許長按功能的,那么就進行別的邏輯操作,這里不作研究。
上一篇:STM32學習之:STM32F4XX的三大主體部分
下一篇:STM32學習之:FMC-擴展外部SDRAM
推薦閱讀
史海拾趣
福祿克(Fluke)公司在電子行業中的發展歷程充滿了創新與突破,以下是五個與福祿克公司發展相關的故事:
1. 創立與初期發展
1948年,John Fluke先生在美國康涅狄格州的家中地下室創立了福祿克公司,并親自設計了公司的第一款產品——VAW Meter(伏特、安培、瓦數表)。這一創舉標志著福祿克在電子測試測量領域的初步探索與嘗試。隨著產品的不斷推出和市場認可度的提升,福祿克逐漸在電子行業中站穩了腳跟。
2. 技術創新與市場拓展
多年來,福祿克公司一直致力于技術創新和產品升級。例如,福祿克推出的手持式電流表、接地阻抗測量儀表等產品,憑借其高精度和可靠性,在電力、通信、工業控制等多個領域得到了廣泛應用。同時,福祿克還不斷拓展其銷售和服務網絡,覆蓋全球多個國家和地區,為全球客戶提供優質的測試測量解決方案。
3. 新能源汽車領域的涉足
隨著新能源汽車產業的快速發展,福祿克公司也積極涉足這一領域。新能源汽車中的鋰電池、光纖等關鍵部件需要在使用過程中進行連續的溫度監測。福祿克憑借其可靠的耐用性,為多家新能源汽車企業提供了安全可靠的測試測量產品及解決方案。這一舉措不僅拓展了福祿克的市場領域,也進一步鞏固了其在電子測試測量行業的領先地位。
4. 應對國際計量系統變革
當前國際計量系統正在經歷歷史性變革,福祿克公司密切關注這一世界熱議話題。作為全球知名的電子測試儀器公司,福祿克已做好準備隨時對應調整,以應對計量單位量子化等挑戰。福祿克的這一舉措體現了其作為行業領導者的前瞻性和應變能力。
5. 智能化與網絡化發展
近年來,福祿克公司不斷推動產品的智能化和網絡化發展。例如,福祿克推出的在線式紅外熱像儀、帶有Fieldsense技術的鉗表等產品,不僅提高了測試測量的精度和效率,還實現了數據的實時傳輸和分析。這些創新產品滿足了客戶對智能化、網絡化測試測量解決方案的需求,進一步推動了福祿克在電子行業中的發展。
以上五個故事展示了福祿克公司在電子行業中的發展歷程和成就。從創立初期的艱難探索到如今的行業領導者地位,福祿克始終秉持著創新、質量和服務的理念不斷前行。
隨著技術的不斷進步,Analog Power公司始終保持著對技術創新的熱情。他們不斷研發新的電源管理技術和產品,推出了一系列具有高性能、高效率、低功耗特點的電源管理解決方案。這些創新產品不僅滿足了客戶的需求,也引領了市場的發展潮流,使得Analog Power在行業中逐漸嶄露頭角。
在激烈的市場競爭中,品牌建設成為Amaze Electronics提升市場影響力的關鍵。公司注重品牌形象的塑造,通過舉辦各類活動、參與行業展會等方式,提高品牌知名度和美譽度。同時,公司還注重產品質量的把控,確保每一件產品都能體現公司的專業水準和品質追求。這些舉措有效提升了Amaze Electronics在市場上的影響力,吸引了更多客戶的關注和信賴。
隨著技術的不斷成熟和市場需求的擴大,Beck IPC開始尋求新的業務領域。公司憑借在嵌入式通訊領域的深厚積累,成功拓展至機器到機器(M2M)通訊和工業物聯網(IIoT)解決方案領域。同時,公司積極開拓國際市場,與多個國家和地區的合作伙伴建立了緊密的合作關系。通過引進國際先進技術和理念,Beck IPC不斷提升自身實力,逐漸在全球范圍內樹立起良好的品牌形象。
博林公司自創立以來,一直致力于電子行業的技術創新。公司擁有一支專業的研發團隊,不斷投入巨資進行技術研發和創新。在某一時期,博林公司成功開發出了一款具有顛覆性的電子產品,憑借其卓越的性能和獨特的設計,迅速在市場上獲得了廣泛認可。這款產品的成功推出,不僅為博林公司帶來了巨大的經濟效益,也進一步鞏固了其在電子行業的領導地位。
在電子市場競爭日益激烈的背景下,Caltron Devices Ltd公司始終堅持品質至上的原則。公司建立了嚴格的質量管理體系,從原材料的采購到生產過程的控制,再到產品的出廠檢驗,每一個環節都嚴格把關。正是這種對品質的執著追求,使得Caltron的產品在市場上獲得了良好的口碑,贏得了客戶的信賴。
請各位高手指教,下面的電路能不能成立,不能成立的原因是什么? 電路是我自己畫的,個人分析如下,有不對的地方希望大家指正:謝謝~ 1》通電,12V經R1到Q1的C極,經R2加至Q1的B極,Q1飽和導通,C極等于0 此時Q2,Q3,Q4的B極全部為0 Q2為PNP管,此時是導通狀態,但對電路沒影響 2》按S1, ...… 查看全部問答∨ |
|
The Data Conversion Handbook下載 絕對夠經典的教材。我從ADI官網下的,免費提供給大家~ 其實ADI官網也是免費 The Data Conversion Handbook, edited by Walt Kester (Newnes, 2005), is written for design engineers who routinely use data converters and related circuitr ...… 查看全部問答∨ |
|
小弟最近在做一個pda與pc 的通信問題,最終要解決的問題是將pda中一xml文件上傳給遠程pc服務器。 我現在做的測試就是用socket實現pda與pc間的簡單通信,代碼如下: pda端: & ...… 查看全部問答∨ |
|
我現在在LPC2478開發板下外部FLASH跑LCD程序,仿真放在中斷處,發現一個奇怪的問題。 如果進了中斷,LCD_INISTAT的bit[1]一直是1; 如果我在內部flash跑,LCD_INTSTAT的bit[1]就不為1,為0。 內部fl ...… 查看全部問答∨ |