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

12 篇文章 3 订阅
9 篇文章 1 订阅

一、软件准备

可以看上一篇的软件准备

二、硬件准备

STM32F407霸天虎

DAP下载器

三、CubeMX配置

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

按键机械触点断开、闭合时,由于触点的弹性作用,按键开关不会马上稳定接通或一下子断开,使用按键时会产生(如下图)中的带波纹信号,需要用软件消抖处理滤波,不方便输入检测。霸天虎开发板连接的按键带硬件消抖功能,见原理图,它利用电容充放电的延时,消除了波纹,从而简化软件的处理,软件只需要直接检测引脚的电平即可。


根据原理图可知,按键1在PA0,按键2在PC13,这些按键在没有被按下的时候,GPIO 引脚的输入状态为低电平 (按键所在的电路不通,引脚接地),当按键按下时,GPIO 引脚的输入状态为高电平 (按键所在的电路导通,引脚接到电源)。只要我们检测引脚的输入电平,即可判断按键是否被按下。
在这里插入图片描述
配置Key1,Key2的GPIO模式为输入模式(浮空输入),无需上下拉
在这里插入图片描述

根据原理图可以知道,开发板的LED引脚在PF6,7,8上,除此之外还有一个PC3的蓝色LED灯,都为低电平点亮
在这里插入图片描述
本次实验只用到了红灯,所以只需要配置PF6就可以了
在这里插入图片描述

转跳到时钟树配置,STM32F407ZGT6的最大时钟频率是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 */

HAL_GPIO_WritePin函数作用是将写入指定的GPIO电平
HAL_GPIO_ReadPin的函数作用是读取GPIO的输入电平

五、实验效果

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值