STM32--外部中斷
STM32的每個IO都可以作為外部中斷的中斷輸入口,
F103支援19個外部中斷請求分別是:
線 0~15:對應外部 IO 口的輸入中斷。
線 16:連線到 PVD 輸出。
線 17:連線到 RTC 鬧鐘事件。
線 18:連線到 USB 喚醒事件。
每條中斷線對應GPIOx的對應位,具體x是多少需要具體設定,配置 GPIO 與中斷線的對映關係的函式 GPIO_EXTILineConfig()來實現的:
void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)
將中斷線 2 與 GPIOE 對映起來,那麼很顯然是 GPIOE.2 與 EXTI2 中斷線連線了
GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource2);
中斷線上中斷的初始化通過EXTI_Init()實現。
void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct);
示例:
EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_Line=EXTI_Line4; //中斷線標號
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //中斷模式(Interrupt和Event)
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //觸發方式(下降沿Falling,上升沿Rising或任意電平Rising_Falling)
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
涉及到中斷還得配置NVIC(看第三天串列埠)(EXTI2_IRQn)
中斷函式(6個)
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 每個中斷線對應一箇中斷函式,中斷線 5-9 共用中斷函式 EXTI9_5_IRQHandler,中
斷線 10-15 共用中斷函式 EXTI15_10_IRQHandler。
判斷某個中斷線上的中斷是否發生(標誌位是否置位):
ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);
清除某個中斷線上的中斷標誌位:
void EXTI_ClearITPendingBit(uint32_t EXTI_Line);
常用的中斷服務函式格式:
void EXTI2_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line2)!=RESET)//判斷某個線上的中斷是否發生
{
中斷邏輯…
EXTI_ClearITPendingBit(EXTI_Line2); //清除 LINE 上的中斷標誌位
}
}
總結
使用 IO 口外部中斷的一般步驟:
1)初始化 IO 口為輸入。
2)開啟 IO 口複用時鐘,設定 IO 口與中斷線的對映關係。
3)初始化線上中斷,設定觸發條件等。
4)配置中斷分組(NVIC),並使能中斷。
5)編寫中斷服務函式。
按鍵上拉輸入,中斷要配置下降沿,按鍵下拉輸入,中斷要配置上升沿
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//外部中斷,需要使能AFIO時鐘
相關文章
- EXTI-外部中斷
- 應廣微控制器-外部中斷demo
- STM32 外部中斷使用方法總結
- x86架構中的外部中斷結構-Part 1:中斷控制器的演化架構
- 微控制器學習(十)紅外遙控與外部中斷
- SpringBoot中配置外部TomcatSpring BootTomcat
- 【STM32】【STM32CubeMX】STM32CubeMX的使用之二:外部中斷
- STM32--矩陣鍵盤的設計實現矩陣
- 程式設計思路-外部請求,中斷測試,結算費用,帶出logs引數程式設計
- LINUX中斷--申請中斷和解除安裝中斷Linux
- 中斷和中斷處理程式
- 中斷
- 暫時關閉EXTI外部中斷的一個坑 HK32(stm32沒有測試過)
- 硬中斷,軟中斷,訊號,異常
- 外部js呼叫vue的methods中的方法JSVue
- 外部排序排序
- 原來定時器中斷是個偽中斷定時器
- minos 2.4 中斷虛擬化——中斷子系統
- Web Components中引入外部CSS的 8 種方法WebCSS
- 缺頁中斷
- baremetal GPIO中斷REM
- 28388_中斷
- (13)中斷門
- Pycharm:terminal中python不是內部或外部命令PyCharmPython
- Maui 讀取外部檔案顯示到Blazor中UIBlazor
- Spring中的Environment外部化配置管理詳解Spring
- 8.4.9 在truffle環境中執行外部指令碼指令碼
- Oracle 外部表Oracle
- GEDIT外部工具
- 外部插入.after()
- 引入外部字型
- 0166-BIOS 中斷iOS
- SMP PPI中斷使用
- 異常和中斷
- Cortex-A系列中斷
- 聊聊中斷機制~
- kubernetes之pod中斷
- Linux核心軟中斷Linux