首页 文章

Ticker计时器中断最大计数

提问于
浏览
0

在这个链接上

https://os.mbed.com/handbook/Ticker

它说,“请注意,定时器基于32位int微秒计数器,因此最多只能达到2 ^ 31-1微秒,即30分钟 . 它们的设计时间介于微秒和秒之间 . 对于更长的时间,你应该考虑时间()/实时时钟 . “

我的问题是,这个30分钟的限制仅适用于使用1 us的间隔时?这样的事情

flipper.attach_us(&flip,1);

如果我必须每1毫秒调用一次中断,这是否意味着计数器现在可以达到30000分钟?这样的事情

flipper.attach_us(&flip,1000);

此外,定时器在被填充后会发生什么,它会自行清除它并重新启动或通过错误完成 .

2 回答

  • 0

    这是函数声明:

    void attach_us (Callback< void()> func, us_timestamp_t t)
    

    "t"是两次通话之间的时间 . 您在链接页面中发现的警告(https://os.mbed.com/handbook/Ticker)表示您可以设置的最大间隔时间约为30分钟,因为"t"是32位int . (我认为它在最新的API中是64位.https://os.mbed.com/docs/latest/reference/ticker.html) .

    当计时器达到“t”指定的值时,它会溢出并触发回调函数 . 它重复,直到你分开它 .

    如果您的间隔为1毫秒,则无需担心30分钟的最大限制 .

  • 0

    您要链接的页面已过时 . 定时器不再是32位,而是现在的64位;所以这不再是一个问题 . 请参阅https://os.mbed.com/docs/latest/reference/ticker.html的最新版本的 Ticker 文档 .

相关问题