我正在试图找出一些为我们编写的固件.我不是那么熟悉C,我觉得这里有一些简写,我只是没有得到.我不明白代码与评论的关系,特别是你如何从中获得70毫秒.你能帮忙翻译成英文吗?
// so the button has to be held for 70 ms to be considered being pressed
// and then has to be released for 70ms to be considered un-pressed
State=(State<<1) | !input(USER_BUTTON) | 0xe000;
if(State==0xe000)
{
Debounced_Button_Pressed = TRUE;
time_button_held++;
}
else if (State==0xffff)
{
Debounced_Button_Pressed = FALSE;
}
Run Code Online (Sandbox Code Playgroud)
这是一个定时器中断功能,显然每4.4ms发射一次
谢谢.
bdo*_*lan 13
让我们一步一步......
State=(State<<1) | !input(USER_BUTTON) | 0xe000;
Run Code Online (Sandbox Code Playgroud)
这样做是:
因此,这里有13位未强制打开,它们形成了USER_BUTTON输入的最后13个样本的历史记录.
if语句然后只检查这些位中的所有13位是关闭(给出0xe000)还是打开(给出0xffff).如果关闭,按钮一直按下了13个样品; 如果打开,则13个样本未被按下.
然后,这给出了4.4ms*13 = 57.2ms的去抖时间 - 与评论稍微偏离,或者定时器间隔接近5.385ms.
| 归档时间: |
|
| 查看次数: |
558 次 |
| 最近记录: |