A0 基于button drive的按键实验

前言

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

实验现象

A0 基于button drive的按键实验_第1张图片

需要自己实现部分

  • 读取按键电平: 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格式;
    A0 基于button drive的按键实验_第2张图片
  • 编译时很多错误信息: 这里用排除法帮了我的大忙,就是把有错误的地方给屏蔽掉,查看到地是哪个地方有错误, 缩小排错范围;
  • 错误提示有些变量未定义: 在编译器选择C99标准
    A0 基于button drive的按键实验_第3张图片

其它

  • 功能可以自定义选择, 是否支持长按和单击双击;
  • 如果某些项时间感觉不合适,也可适当调整;
    A0 基于button drive的按键实验_第4张图片

源代码

源代码

你可能感兴趣的:(STM32)