前言
写过扫描式,中断式按键检测程序;最近在网上看到网友分享的按键程序,可方便创建按键和实现单击,双击和长按,因此试验了一下,中间也遇到了一些问题,并一一解决,在此,记录下实验心得; 同时感谢开源源代码的网友 杰杰.
实验现象
需要自己实现部分
- 读取按键电平: 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标准
其它
- 功能可以自定义选择, 是否支持长按和单击双击;
- 如果某些项时间感觉不合适,也可适当调整;