stm32學習筆記 F1系列外部中斷EXTI

STM32的每個IO都可以作爲外部中斷輸入。
STM32F1系列的中斷控制器支持19個外部中斷/事件請求:
線0~15:對應外部IO口的輸入中斷。
線16:連接到PVD輸出。
線17:連接到RTC鬧鐘事件。

線18:連接到USB喚醒事件。


每個外部中斷線可以獨立的配置觸發方式(上升沿,下降沿或者雙邊沿觸發),觸發/屏蔽,專用的狀態位。
IO口外部中斷在中斷向量表中只分配了7箇中斷向量,也就是隻能使用7箇中斷服務函數
外部中斷線0~4各分配一箇中斷向量,各有一個服務函數

外部中斷線5~9分配一箇中斷向量,共用一個服務函數,外部中斷線10~15分配一箇中斷向量,共用一箇中斷服務函數。


中斷服務函數列表:
EXTI0_IRQHandler           
EXTI1_IRQHandler
EXTI2_IRQHandler           
EXTI3_IRQHandler           
EXTI4_IRQHandler           
EXTI9_5_IRQHandler         
EXTI15_10_IRQHandler       
外部中斷常用庫函數:
①void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
   //設置IO口與中斷線的映射關係

②void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct);

 //初始化中斷線:觸發方式等
 typedef struct
{
  uint32_t EXTI_Line;   //指定要配置的中斷線           
  EXTIMode_TypeDef EXTI_Mode;   //模式:事件 OR中斷
  EXTITrigger_TypeDef EXTI_Trigger;//觸發方式:上升沿/下降沿/雙沿觸發
  FunctionalState EXTI_LineCmd;  //使能 OR失能
}EXTI_InitTypeDef;

③ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);
//判斷中斷線中斷狀態,是否發生

④void EXTI_ClearITPendingBit(uint32_t EXTI_Line);
//清除中斷線上的中斷標誌位

外部中斷的一般配置步驟:
1>初始化IO口爲輸入。       GPIO_Init();
2>開啓IO口複用時鐘。       RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
3>設置IO口與中斷線的映射關係。        void GPIO_EXTILineConfig();
4>初始化線上中斷,設置觸發條件等。       EXTI_Init();
5>配置中斷分組(NVIC),並使能中斷。       NVIC_Init();
6>編寫中斷服務函數。      EXTIx_IRQHandler();
7>清除中斷標誌位。      EXTI_ClearITPendingBit();

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章