关键字:延时器;非阻塞自由延时在一些按键或其它形式的命令响应中,要求严格的话通常会需要队列缓存命令,以防丢失。但是我通常还会遇到一些要求非常不严格的场景,这些场景甚至要限制响应的次数或频率(这里指不能响应太快)。比如(只是个例子),我的产品是一个根据接收到的串口命令来工作的。串口命令发送的速度是不确定的,有时候1秒会发送10帧命令过来,有的时候1秒确能发送100帧,但是这个产品每秒只打算处理20帧命令。而且由于命令有多个,对于有些命令码可能每秒响应40帧或30帧等,这种场景用多个延时器就很合适了。延时器模块的接口函数一共3个,如下:
看下接口函数的实现,很简单的
模块的使用使用很简单,首先把模块源文件添加到工程中,然后把
放到心跳中断里,我一般用1ms的心跳中断。现在就能使用
来设置延时器了,入参分别是延时器的ID和延时时间,延时时间单位和心跳中断有关,看自己需求了。。。然后用
来查询延时器是否超时,入参是要查询的延时器ID号。延时器的可用最大数量通过宏定义配置
模拟一个应用场景演示代码
延时器的用处还有很多,可以灵活。。。