[PIC®/AVR®/dsPIC®产品] 在使用Arduino开发的时候我发现了一个替代定时器的方法

[复制链接]
 楼主| gaoyang9992006 发表于 2024-6-20 09:11 | 显示全部楼层 |阅读模式
我本来是想用定时器的,可是我看到了一个系统定时器的应用函数:millis();
该函数其实很容易在任何单片机上实现,比如启用一个定时器,在定时器了设定1ms刷新一个时间变量。就可以调用这个函数去读取这个变量。
那么如何使用它呢。如果我有应用,我通过该函数获取一个时间参考点,并记录,根据自己定义的周期时间来比对它即可实现类型定时器的效果。
比如我想执行一个刷新操作和一个滚动操作就可以这么写:
  1.   my_time=millis();
  2.   if((my_time-rolling_time)>ROLLING_CYCLE)
  3.   {
  4.     //如果达到滚动周期执行滚动操作,并更新滚动时间参考点
  5.     rolling_time=my_time;

  6.   }
  7.   if((my_time-refresh_time)>REFRESH_CYCLE)
  8.   {
  9.     //如果达到刷新周期执行刷新操作,并更新刷新时间参考点
  10.     refresh_time=my_time;
  11.    
  12.   }
具体操作函数空置了,大概就是这个思路。
大家觉得这个方法是不是可行,或者很有用。
 楼主| 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()  的原型是什么?

读取一个时间变量。应该是定时器实现的。
643757107 发表于 2024-6-26 10:56 | 显示全部楼层
这个方法不错。不过没定时器的更加及时。
643757107 发表于 2024-6-26 10:57 | 显示全部楼层
对于要求不是很严格的定时操作是可以的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2046

主题

16356

帖子

221

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2046

主题

16356

帖子

221

粉丝
快速回复 在线客服 返回列表 返回顶部