可重复使用的按钮反跳模块

在许多嵌入式系统中,按钮是常见的组件,但是从快速查看防抖动算法来看,它们通常不会被编写为可移植或可重复使用。谷歌的快速搜索显示,有超过212,000个网站正在研究如何对按钮进行反跳操作,但其中大多数缺乏可伸缩性和可移植性。下面是一个示例反跳模块,该模块具有可伸缩性,可移植性,几乎可以在任何应用程序中使用。

单击下面的按钮下载反跳示例:

下载链接

如何配置按钮模块:

如何设置按钮去抖模块

脚步
1)在项目中包含头文件和源文件
2)定义带有掩码的gpio_config.h模块以访问gpio引脚
3)定义一个包含Dio_ChannelRead函数的gpio模块

*步骤2和3可以代替快速而肮脏的gpio驱动程序

4)在button.c的ButtonList []中定义哪些I / O引脚是按钮
5)在ButtonCurrentState中为每个按钮设置默认状态
6)为ButtonDebounceCountList中的每个按钮设置反跳计数。
例如,如果在10ms任务中调用Button_Debounce,并且去抖动为40 ms,则计数为4。
7)在button.h中,更新存在的按钮的Button_t枚举。如果只有一个按钮,则枚举中应该定义一个按钮。
8)在系统初始化中调用Button_Init
9)在所需任务中调用Button_Debounce。建议10毫秒的任务。
10)编写一个使用按钮模块的应用程序。可以放在10毫秒任务中的示例应用程序如下:
示例应用程序:

Button_State_t Button1State = BUTTON_STATE_NOT_PRESSED;

//防抖开关
Button_Debounce();

Button1State = Button_StateGet(BUTTON_PRIMARY);

if(Button1State == BUTTON_STATE_PRESSED)
{
Led_On(LED_RED);
}
其他
{
Led_Off(LED_RED);
}

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.