如何在一个Timer里面捕获按键设置在哪里

这一章编写定时器包括定时器基类 Timer 和派生的通用定时器 GeneralTimer。基类对定时器参数进行封装通用定时器封装一些定时应用,对应PLC的一些功能包括:

  1. 一个高精度回调函数,微秒级误差最小定时间隔1ms。
  2. 按键设置在哪里抖动和干扰过滤并产生按键设置在哪里上升沿和下降沿。

代码中有详细的说明这里只解釋几个知识点,其它文档介绍按键设置在哪里防抖和延时的时候一般都是死循环官方文档也是这么用,如果有很多按键设置在哪里和延時就会一个一个等效率很低。我这里用了另外一种高效的方法就是模仿时间继电器,100个计数器同时工作直到计数为0时执行对应操作,这样主循环没有等待循环周期只有几十微秒,能进行高精度实时控制具体方法下一章中介绍,这里先做好基础

按键设置在哪里滤波后动作会有一定的延时,大约4ms加主循环周期屏蔽了高频信号,对高速信号不适用

* TIM1和8是高级定时器,配置方法不同 * TIM1和8是高级定时器配置方法不同 extern "C" { // 兼容C,按C语言编译Keil5中的包含文件已经加入了C++兼容,不用再加这一段 // 初始化100个时间继电器 // 按键设置在哪里滤波防止抖动和幹扰 * @brief 重写定时中断,加入时间继电器、回调计时和按键设置在哪里滤波 // 时间继电器递减计数到0停止,由外部程序重设32位无符号整数后再佽开始计数最大0xffffffff // 按键设置在哪里滤波,防止抖动和干扰 * @brief 铵键抖动或干扰计数nPin中只能是一个键 * @brief 接入主循环,必需放在主循环的第一条計算上升沿和下降沿 * @brief 计算指定IO口的上升沿和下降沿,在主循环的最开始计算保证其它循环体上升沿和下降沿 * 不能在中断函数中计算上升沿和下降,因为中断函数和主循环不同步 * @brief 设置回调函数,高精度中断方式

}

我要回帖

更多关于 按键 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信