论坛元老
 
- 积分
- 10653
- 金钱
- 10653
- 注册时间
- 2017-4-14
- 在线时间
- 2780 小时
|
本帖最后由 nashui_sx 于 2020-3-29 18:47 编辑
0.stm32f103c8t6测试 按键PA0 (测试开发板 按下是低电平 平时高电平)
1.改造的MultiButton-master这个开源的按键库(https://github.com/0x1abin/MultiButton)首先感谢作者
2.用法简单说明
1)能实现下面的7中按键状态
PRESS_DOWN = 0, 按下
PRESS_UP, 抬起
PRESS_REPEAT, 重复按 最大15
SINGLE_CLICK, 单击
DOUBLE_CLICK, 双击
LONG_RRESS_START, 长按
2)TICKS_INTERVAL 宏控制扫描周期,也就是多久调用一下状态机的驱动器button_ticks()函数 例子用的5ms 可以根据需要自己改间隔
3)本例子采用滴答定时器中段函数驱动button_ticks()函数
4)对接按键multi_button_init()
multi_button_init---先初始化引脚
button_init (&btn1, read_button1_GPIO, 0);//按下时低电平 告诉状态机这个按键按下时候是什么电平 并给一个读取这个引脚的电平函数read_button1_GPIO read_button1_GPIO函数返回PAin(8) 引脚状态
u8 read_button1_GPIO(void)
{
return PAin(8);
}
然后回调函数方法用的时候,给不同的状态赋值回调函数,不用回调函数赋值为空
button_attach(&btn1, PRESS_DOWN, BTN1_PRESS_DOWN_Handler); button_attach(&btn1, PRESS_UP, BTN1_PRESS_UP_Handler);
button_attach(&btn1, PRESS_REPEAT, BTN1_PRESS_REPEAT_Handler);
button_attach(&btn1, SINGLE_CLICK, BTN1_SINGLE_Click_Handler);
button_attach(&btn1, DOUBLE_CLICK, BTN1_DOUBLE_Click_Handler);
button_attach(&btn1, LONG_RRESS_START, BTN1_LONG_RRESS_START_Handler);
button_attach(&btn1, LONG_PRESS_HOLD, BTN1_LONG_PRESS_HOLD_Handler);
5)使用时候调用下multi_button_init();
就可以用按键值或者会回调函数处理按键了
回调函数可以在不同任务重新赋值,达到,不同界面之类的实现你不同按键功能 按键值使用能无缝对接正点原子代码,回调函数更人性化
3.代码
按键开源库.rar
(284.02 KB, 下载次数: 107)
|
|