A0 基于button drive的按键实验

博主尝试网上分享的按键程序,可方便创建按键及实现单击、双击和长按。实验需自行实现读取按键电平、定义触发方式、设置延时程序和串口初始化等。过程中遇到串口打印中文乱码、编译错误、变量未定义等问题,并给出解决办法,还提到功能可自定义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

写过扫描式,中断式按键检测程序;最近在网上看到网友分享的按键程序,可方便创建按键和实现单击,双击和长按,因此试验了一下,中间也遇到了一些问题,并一一解决,在此,记录下实验心得; 同时感谢开源源代码的网友 杰杰.

实验现象

在这里插入图片描述

需要自己实现部分

  • 读取按键电平: Read_KEY1_Level
uint8_t Read_KEY1_Level(void)
{ 
    return (uint8_t)((GPIO_PORT_KEY1->IDR) & GPIO_PIN_KEY1);
}
  • 定义KEY_ON是高电平触发按下还是低电平按下
#define KEY_ON          1 //高电平代表按键按下
  • 延时程序: 主程序中延时20ms, 这里使用systick设置延时时间.
  • 串口初始化: 用于打印实验结果, 当然也可以使用LED等其它外设来查看实验结果;

问题

  • 串口打印中文乱码: 把源代码文件用记事本打开,另存为ANSI格式;
    在这里插入图片描述
  • 编译时很多错误信息: 这里用排除法帮了我的大忙,就是把有错误的地方给屏蔽掉,查看到地是哪个地方有错误, 缩小排错范围;
  • 错误提示有些变量未定义: 在编译器选择C99标准
    在这里插入图片描述

其它

  • 功能可以自定义选择, 是否支持长按和单击双击;
  • 如果某些项时间感觉不合适,也可适当调整;
    在这里插入图片描述

源代码

源代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值