首页 > 解决方案 > 如果我在millis函数中使用uint64_t类型号可以吗?

问题描述

我正在使用 attiny 微控制器和 atmel 工作室。我正在millis我的项目中使用该功能。

与millis函数相关的代码:

图片在这里

我正在使用这个经典代码:


starttimex = millis();
endtimex = starttimex;
    
while ((endtimex - starttimex)<=60000)
{
               
    endtimex = millis();
                        
    // Action
                         
}

我不希望该millis()功能在 50 天后重置。我必须使用uint64_t而不是unsigned long.

我的问题:

  1. 这会造成任何麻烦吗?这种情况有缺点吗?缺点之一是内存大小。我知道这个。但是,我不知道其他缺点。

  2. 我不明白timer0_overflow_count图像中的变量。有必要这样做millis吗?

  3. 我应该uint64_t为图像中的所有unsigned long变量做些什么?

谢谢

标签: arduinoavratmelatmelstudioattiny

解决方案


如果您的时间间隔(示例代码中的 60000)不超过 的范围unsigned long,那么您很好。

Millis() 函数不会重置,它只是翻转:)

(endtimex - starttimex)即使在翻转期间,在无符号算术中也可以很好地计算。


推荐阅读