Timer 计时器中断最大计数

Timer 计时器中断最大计数,timer,mbed,Timer,Mbed,在这个链接上 它说,“注意定时器是基于32位int微秒计数器的,所以只有时间最多可以达到2 ^ 31 -1微秒,即30分钟。它们被设计为在微秒和秒之间的时间。对于更长的时间,你应该考虑时间()/实时时钟。” 我的问题是,30分钟的限制仅适用于间隔为1us的情况?像这样的 翻转器。连接我们(&flip,1) 如果我必须每1ms调用一次中断,这是否意味着计数器现在可以达到30000分钟?像这样的 flipper.连接我们(&flip,1000) 此外,计时器被填满后会发生什么情况?它会自己清除并重

在这个链接上

它说,“注意定时器是基于32位int微秒计数器的,所以只有时间最多可以达到2 ^ 31 -1微秒,即30分钟。它们被设计为在微秒和秒之间的时间。对于更长的时间,你应该考虑时间()/实时时钟。”

我的问题是,30分钟的限制仅适用于间隔为1us的情况?像这样的

翻转器。连接我们(&flip,1)

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

flipper.连接我们(&flip,1000)


此外,计时器被填满后会发生什么情况?它会自己清除并重新启动,还是会通过错误来完成

这是函数声明:

void attach_us (Callback< void()> func, us_timestamp_t t)
void-attach\u-us(回调func,us\u-timestamp\t)
“t”是通话间隔时间。在链接页面()中找到的警告表示,可以设置的最大间隔时间约为30分钟,因为“t”是32位int。 (但我认为在最新的API中它是64位的。)

当计时器达到“t”指定的值时,它溢出并触发回调函数。它会重复这个过程,直到你拆下它


如果间隔为1ms,则无需担心最大30分钟的限制。

您链接到的页面是旧的。计时器不再是32位,而是64位;因此,这不再是一个问题。查看最新版本的
股票代码
文档。

您好,欢迎来到StackOverflow。这个问题目前并不意味着你已经尝试了这个定时器技术——这是在社区参与之前通常在这个网站上期待的。我建议你做一些实验,然后编辑问题来发布你的代码,你期望发生什么,以及在实践中发生了什么。我以1毫秒的间隔尝试了这一点,打印了一个递增计数器,它似乎工作正常,但要检查限制,它必须测试30000分钟。对于1us,不会打印任何内容,因为我认为1us间隔太短,控制器无法执行周期函数并打印输出。在10和100美国也尝试过,但在输出时却一无所获。谢谢。现在要做的最好的事情是编辑问题以包含这些新信息以及相关代码。希望社区会接受这一点并帮助你。