STM32F411 Discovery学习笔记(三)中断与按键

拖了好几天终于进入到中断的学习了
我们的任务目标是采用中断的方式通过411板上的按键控制LED的亮灭

中断源的设置

打开STM32CubeMx,按照之前的方法新建文件
设置中断源,查阅开发板手册发现开发板有两个按键,一个是User一个是Reset.很显然我们要用User键。
STM32F411 Discovery学习笔记(三)中断与按键
很显然USER键连接到了GPIO A0上,但是低有效还是高有效并不知道。
别急,manual一定会写的。
STM32F411 Discovery学习笔记(三)中断与按键
根据原理图,当按键被按下的时候,PA0读入高电平,也就是说PA0高有效。那么一切都简单了。
STM32F411 Discovery学习笔记(三)中断与按键
在cubeMx里将PA0设置成外部中断0
STM32F411 Discovery学习笔记(三)中断与按键
进一步对PA0进行设置,将其设置为上升沿触发,也就是我们按下按键的一瞬间执行中断服务子函数。
STM32F411 Discovery学习笔记(三)中断与按键
开启中断使能。生成MDK工程

编写中断服务子程序

/* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */
		HAL_GPIO_WritePin(GPIOD, GPIO_PIN_13, GPIO_PIN_RESET);
		HAL_Delay(1000);
    /* USER CODE BEGIN 3 */
  }
/* USER CODE BEGIN 4 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	if (GPIO_Pin==GPIO_PIN_0)
	{
		HAL_GPIO_WritePin(GPIOD, GPIO_PIN_13, GPIO_PIN_SET);
		HAL_Delay(1000);
	}

}
/* USER CODE END 4 */

编译烧录程序,成功!