STM32CubeMx玩转STM32—按键中断 Day4

一、SMT32CubeMX配置

1、将PC14设置为GPIO_EXTI14外部中断模式,命名为KEY;将PC15设置为GPIO_Output模式,命名为LED。
在这里插入图片描述
2、将PC14的中断触发模式设置为下降沿触发
在这里插入图片描述
3、在NVIC(内嵌向量中断控制器)里面将EXTI中断优先级设置为1
在这里插入图片描述

二、代码

1、在stm32l0xx_hal_gpio.c里面可以看到处理中断请求的函数

void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
{
  /* EXTI line interrupt detected */
  if(__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET) 
  { 
    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
    HAL_GPIO_EXTI_Callback(GPIO_Pin);	//这个响应函数需要自己写
  }
}

2、在gpio.c里面编写Callback响应函数

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
/*实现按键中断控制LED亮起和熄灭*/
	if(GPIO_Pin == KEY_Pin)		
  {
    if(HAL_GPIO_ReadPin(LED_GPIO_Port,LED_Pin)==GPIO_PIN_RESET)//读取LED引脚状态
			HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET);
	else if(HAL_GPIO_ReadPin(LED_GPIO_Port,LED_Pin)==GPIO_PIN_SET)
			HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET);
  } 
}

3、main.c不用动

三、效果

按下USER按键,LED熄灭,再按一下,LED点亮。

猜你喜欢

转载自blog.csdn.net/qq_42852559/article/details/107645182