STM32
直播中

李永每

7年用户 1391经验值
私信 关注
[问答]

请问一下如何去配置STM32F407按键中断PA0引脚呢

请问一下如何去配置STM32F407按键中断PA0引脚呢?

回帖(1)

刘飞

2021-11-16 14:35:32
  此处配置GPA0引脚口为按键,下降沿触发
  1.开启GPIO时钟开启EXTI相关时钟
  RCC_ APB2PeriphClockCmd(RCC_ APB2Periph_ SYSCFG, ENABLE);
  2.对应引脚使用GPIO_init();配置为输入模式
  3.使用SYSCFG_EXTILineConfig() ;
  选择一个引脚连接对应的一个外部中断线(EXTI0-15)
  4.使用EXTI_Init();选择模式(中断模式,事件模式(不会以中断机制处理))(上升沿,下降沿,边缘触发);
  5.配置刚开启的外部中断优先级(中断管理,优先级管理)涉及:仲裁器 配置中断优先级函数NVIC_Init();
  void keyinit(void)
  {
  //定义语句,三个结构体 io exti nvic
  GPIO_InitTypeDef GPIO_InitStructure;
  EXTI_InitTypeDef EXTI_InitStructure;
  NVIC_InitTypeDef NVIC_InitStructure;
  //使能时钟
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
  //将pa0引脚配置如下
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; //输入模式
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //上下拉选择 浮空
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  //将pa0连接到外部中断exti0(重要!)
  //SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOx(引脚组), EXTI_PinSourcex(引脚口));
  SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);
  EXTI_InitStructure.EXTI_Line = EXTI_Line0;//中断线
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//中断模式
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//下降沿触发
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;//ENABLE开启
  EXTI_Init(&EXTI_InitStructure);
  NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;//全局编号 6
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;//抢占优先级(第一优先级)
  //0到15级,值越低,优先级越高
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;//响应优先级(第二优先级)
  //0到15级,值越低,优先级越高
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
  }
  中断服务函数
  void EXTI0_IRQHandler(void)
  {
  if(EXTI_GetITStatus(EXTI_Line0) != RESET)
  {
  //响应处理代码
  EXTI_ClearITPendingBit(EXTI_Line0);//清除中断标志
  }
  }
  
  EXTI模块使用
  
举报

更多回帖

发帖
×
20
完善资料,
赚取积分