You need to enable JavaScript to run this app. 如何将Arduino setup函数中存储的变量值传递到loop函数中使用
优惠活动
大模型
产品
解决方案
定价
更多

如何将Arduino setup函数中存储的变量值传递到loop函数中使用

问题根源

  • 变量遮蔽:setup 内部通过float startTime=millis()重新声明了一个和全局变量同名的局部变量,该变量仅在setup作用域内生效,全局变量完全没有被修改,因此loop中读取的始终是初始值0。
  • 返回值无效:Arduino框架中setup的定义是无返回值的void类型,你写的return startTime不会生效,也不会自动把值写入全局变量。
  • 类型不匹配:millis()返回值为unsigned long类型,你用int、float存储会有精度损失、溢出的风险,属于类型使用错误。

修正方案

如果你需要的是setup执行结束的时间点

unsigned long startTime = 0;  // 使用和millis()返回值匹配的类型

void setup(){
    Serial.begin(9600); // 必须初始化串口才能正常打印
    // [其他与本问题无关的setup代码]
    startTime = millis(); // 直接为全局变量赋值,不要加类型声明
}

void loop(){
    Serial.println(startTime);
    delay(1000); // 避免串口刷屏可按需调整
}

如果你需要的是setup的执行时长

unsigned long setupDuration = 0;

void setup(){
    unsigned long setupStart = millis();
    Serial.begin(9600);
    // [其他与本问题无关的setup代码]
    setupDuration = millis() - setupStart; // 计算得到setup总执行时长
}

void loop(){
    Serial.print("Setup执行时长(ms): ");
    Serial.println(setupDuration);
    delay(1000);
}

内容的提问来源于stack exchange,提问作者thealol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 23:39:03