蓝桥杯嵌入式学习日记(三)——按键的长按、短按与双击(三行按键法)【STM32】【HAL库】
目录
- 一、查阅相关资料
- 二、程序的编写
- 1、创建工程
- 2、三行按键法
- 3、短按与长按
- 4、双击
一、查阅相关资料
想要进行一块板子的开发,需要先查阅资料了解器件连接。
从CT117E-M4产品手册中不难发现,按键分别有PB0、PB1、PB2、PA0分别对应B1、B2、B3、B4四个按键。
按键抖动
我们所使用这类按键时,当按键按下,内部的机械触点因为弹性,并不会立马导通,同样松开时也不是立马分离,而是会产生一连串的抖动,这段时间大概在5~10ms,为了防止紊乱我们要进行消抖。这里我选择利用uwTick进行软件延时,实际情况中也可以使用定时器,但不建议使用HAL_Delay函数进行延时。
if( uwTick - KeyTick
了解了这些,我们可以进行STM32cubemx工程创建。依旧是上一篇的工程进行延展。
二、程序的编写
1、创建工程
如图设置完以后便可以生成工程进行编写,不会利用STM32cubemx生成工程的可以参考上一篇利用STM32cubemx创建工程并以STM32G4点灯【HAL库】。
依旧是照例创建key.c和key.h方便管理。
2、三行按键法
#define B1 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0) #define B2 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1) #define B3 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_2) #define B4 HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) #define Key_Flag B1 | (B2 u8 ReadDate = Key_Flag ^ 0xff ; Trg = ReadDate & (ReadDate ^ Cont) ; Cont = ReadDate ; } if( uwTick - KeyTick
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。
还没有评论,来说两句吧...