Arduino 如果我在millis函数中使用uint64_t类型编号,可以吗?

Arduino 如果我在millis函数中使用uint64_t类型编号,可以吗?,arduino,avr,atmel,atmelstudio,attiny,Arduino,Avr,Atmel,Atmelstudio,Attiny,我使用的是阿提尼微控制器和阿特梅尔工作室。我正在我的项目中使用millis函数 与millis函数相关的代码: 我使用的是这个经典代码: starttimex=millis; endtimex=starttimex; 而endtimex-starttimex 我不理解图像中计时器0\u溢出\u计数的变量。米利斯需要这个吗 溢出计数用于跟踪毫秒数,即使计时器的周期不是毫秒的精确倍数。例如,想象一下,如果计时器每1.5毫秒关闭一次,看看它是如何工作的 这会引起麻烦吗?这种情况有缺点吗 您可以使用任何

我使用的是阿提尼微控制器和阿特梅尔工作室。我正在我的项目中使用millis函数

与millis函数相关的代码:

我使用的是这个经典代码:

starttimex=millis; endtimex=starttimex; 而endtimex-starttimex 我不理解图像中计时器0\u溢出\u计数的变量。米利斯需要这个吗

溢出计数用于跟踪毫秒数,即使计时器的周期不是毫秒的精确倍数。例如,想象一下,如果计时器每1.5毫秒关闭一次,看看它是如何工作的

这会引起麻烦吗?这种情况有缺点吗


您可以使用任何类型的毫秒计数器,但请记住,无论何时更新或读取该变量,中断都是关闭的,因此从32位变为64位意味着中断将关闭更长的时间,这可能会影响系统上运行的其他中断。

如果示例代码中的间隔60000不超过unsigned long的范围,则可以

millis功能不会重置,它只是滚动:


endtimex-无符号算术中的starttimex计算很好,即使在滚动期间也是如此。

您使用的是Arduino内核中的millis函数吗?为什么?你的最终目标是什么?请不要张贴代码图片,将代码复制到你的问题中。阅读关于创建一个新的应用程序的指南。如果你计算正确,你不需要担心滚动。这不是问题。正如Delta_G和datafiddler所指出的,您担心的是一个非问题。请参阅。感谢您的回复,无需执行uint64格式的代码。因为,如果在循环中重置毫秒,endtimex将为010002000。例如,starttimex=4294947296.So 0-4294947296=20000 1000-4294947296=21000 2000-4294947296=22000工作不会中断,当然,在我的限制器条件下,我的限制器60000。