资讯详情

STM32F407霸天虎HAL库学习笔记——按键检测

STM32F407霸天虎HAL库学习笔记-按键检测

  • 一、软件准备
  • 二、硬件准备
  • 三、CubeMX配置
  • 四、keil编程
    • main函数
  • 五、实验效果

一、软件准备

可以看上一篇的软件准备

二、硬件准备

STM32F407霸天虎

DAP下载器

三、CubeMX配置

野火霸天虎使用的主控芯片是STM32F407ZGT6 在这里插入图片描述 RCC选择外部高速时钟 Debug要选择Serial Wire,否则只能烧录一次

根据原理图,按钮1在,按键2在,当这些按钮没有按下时,GPIO 引脚的输入状态为低电平 (按键所在的电路不通,引脚接地),按键时,GPIO 引脚的输入状态为高电平 (按钮所在的电路导通,引脚接通电源)。只要检测引脚的输入电平,就可以判断按钮是否按下。 配置Key1,Key2的GPIO该模式为输入模式(浮空输入)

从原理图可以看出,开发板LED引脚在PF除此之外,还有一个6、7、8上PC3的蓝色LED灯,都为 这个实验只用红灯,只需要配置PF6就可以了

转向时钟树配置,STM32F407ZGT最大时钟频率为168MHz,开发板外部晶振为 25MHz,我们填入 25;通道选择 LSE;PLLM 选为/25;倍频系数; N 选择为 x336;系统时钟选择 PLLCLK;设置为系统时钟 168Mz;APB1 分频系数为/4 即 PCLK1 位42MHz;APB2 分频系数为/2 即 PCLK2 位 84MHz。 根据自己的项目名称命名,IDE选择MDK-ARM 配置完成后点击Generate Code,再点击OpenProject即可从keil打开软件中的项目

四、keil编程

由于我们的Debug用的是DAP,如图下选择Debug和下载配置

main函数

由于开发板按钮使用硬件抖动,不需要软件抖动,否则需要10ms软件消抖是左右延迟的。

   /* USER CODE BEGIN WHILE */   while (1)   { 
             /* USER CODE END WHILE */      /* USER CODE BEGIN 3 */   /*等待KEY1按键按下*/   if(HAL_GPIO_ReadPin(KEY1_GPIO_Port,KEY1_Pin) == RESET)   { 
            /*等待KEY1按键释放*/    while(HAL_GPIO_ReadPin(KEY1_GPIO_Port,KEY1_Pin) == RESET)    { 
             /*灭灯*/     HAL_GPIO_WritePin(LED_R_GPIO_Port,LED_R_Pin,GPIO_PIN_RESET);    }   }   /*等待KEY2按键按下*/   if(HAL_GPIO_ReadPin(KEY2_GPIO_Port,KEY2_Pin) == RESET)   { 
            /*等待KEY2按键释放*/    while(HAL_GPIO_ReadPin(KEY2_GPIO_Port,KEY2_Pin) == RESET)    { 
              /*亮灯*/     HAL_GPIO_WritePin(LED_R_GPIO_Port,LED_R_Pin,GPIO_PIN_SET);
			}			
		}
  }
  /* USER CODE END 3 */

五、实验效果

编译烧录后即可,板上效果:板上红灯默认开启,按下KEY1灭灯,按下KEY2亮灯。

标签: mz电容器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台