打印
[PIC®/AVR®/dsPIC®产品]

在使用Arduino开发的时候我发现了一个替代定时器的方法

[复制链接]
983|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaoyang9992006|  楼主 | 2024-6-20 09:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我本来是想用定时器的,可是我看到了一个系统定时器的应用函数:millis();
该函数其实很容易在任何单片机上实现,比如启用一个定时器,在定时器了设定1ms刷新一个时间变量。就可以调用这个函数去读取这个变量。
那么如何使用它呢。如果我有应用,我通过该函数获取一个时间参考点,并记录,根据自己定义的周期时间来比对它即可实现类型定时器的效果。
比如我想执行一个刷新操作和一个滚动操作就可以这么写:
  my_time=millis();
  if((my_time-rolling_time)>ROLLING_CYCLE)
  {
    //如果达到滚动周期执行滚动操作,并更新滚动时间参考点
    rolling_time=my_time;

  }
  if((my_time-refresh_time)>REFRESH_CYCLE)
  {
    //如果达到刷新周期执行刷新操作,并更新刷新时间参考点
    refresh_time=my_time;
   
  }
具体操作函数空置了,大概就是这个思路。
大家觉得这个方法是不是可行,或者很有用。

使用特权

评论回复
沙发
gaoyang9992006|  楼主 | 2024-6-20 09:12 | 只看该作者
利用该方法可以满足大多数的定时应用。

使用特权

评论回复
板凳
MianQi| | 2024-6-21 09:01 | 只看该作者
millis()  的原型是什么?

使用特权

评论回复
地板
gaoyang9992006|  楼主 | 2024-6-21 20:57 | 只看该作者
MianQi 发表于 2024-6-21 09:01
millis()  的原型是什么?

读取一个时间变量。应该是定时器实现的。

使用特权

评论回复
5
643757107| | 2024-6-26 10:56 | 只看该作者
这个方法不错。不过没定时器的更加及时。

使用特权

评论回复
6
643757107| | 2024-6-26 10:57 | 只看该作者
对于要求不是很严格的定时操作是可以的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:西安公路研究院南京院
简介:主要工作从事监控网络与通信网络设计,以及从事基于嵌入式的通信与控制设备研发。擅长单片机嵌入式系统物联网设备开发,音频功放电路开发。

1905

主题

15677

帖子

201

粉丝