STM32F4 外部中斷EXTI【庫函數操作】


也是一個半生不熟的東西,進行了簡單的中斷處理。
軟件環境:MDK470a
硬件環境:STM32F4-Discovery。按鍵B1連接在F4芯片的PA0引腳。當按鍵按下時,引腳電平被拉底。
功能描述:按壓按鍵B1時,觸發外部中斷。進入中斷處理函數后,通過串口發送消息。
實現步驟:
1、打開PA時鍾,設置PA0引腳為輸入。

void EXTI_GPIO_Congig(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
 
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);
 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_InitStructure.GPIO_Pin = GPIO_PinSource0;
  GPIO_InitStructure.GPIO_Speed =GPIO_Speed_100MHz;
  GPIO_Init(GPIOA,&GPIO_InitStructure);
 
}

2、打開系統配置控制器(System configuration controller)時鍾。
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);
關於系統控制寄存器(SYSCFG)的功能,是F4系列新增的。功能如下:
The system configuration controller is mainly used to remap  the memory accessible in the code area, select the Ethernet PHY interface and manage the external interrupt line
connection to the GPIOs.
SYSCFG主要用於映射訪問CODE區域的內存、選擇以太網的什么接口,管理外部中斷線到GPIO的連接。
設置外部中斷,還要設置SYSCFG的外部中斷配置寄存器。
3、配置外部中斷EXTI的工作方式.
    映射到PA0,即線0,使用中斷模式下降沿觸發。
   設置EXTI寄存器的工作方式交給了庫函數。

void EXTI_Config(void)
{
  EXTI_GPIO_Congig();
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);
 
  EXTI_InitStructure.EXTI_Line = EXTI_Line0;
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
  EXTI_Init(&EXTI_InitStructure);
 
}

4、編寫中斷處理函數,實現向串口打印信息。
     固定的函數名:void EXTI0_IRQHandler(void)。
     進入中斷處理函數后,首先檢查是否為線0的中斷。如果是,則清除這個中斷標志。之后就可以發送消息了。
     消息發送完成之后,清除在處理外部中斷期間到來的外部中斷。使用EXTI_ClearITPendingBit()完成

void EXTI0_IRQHandler(void)
{
  if(SET == EXTI_GetITStatus(EXTI_Line0))
  {   
    EXTI_ClearFlag(EXTI_Line0);
    printf("i am in exti irqhandler\r\n");
    printf("and the extiflag is cleared\r\n");
    EXTI_ClearITPendingBit(EXTI_Line0);
  } 
}

Technorati 標記: STM32F4, EXTI


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM