You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Raspberry Pi Pico W(Arduino IDE)中C代码执行时间输出始终为0

解决Raspberry Pi Pico W在Arduino IDE中统计程序执行时间始终为0的问题

问题原因

输出始终为0的情况,主要有三个核心原因:

  • 系统时间未初始化:Pico W的Arduino环境中,gettimeofday()依赖的系统时钟默认未启动或同步,两次调用返回的时间戳完全一致,差值自然为0。
  • 测试代码为空:如果//code here没有实际执行的代码,两次gettimeofday()调用间隔极短(远小于1微秒),超出该函数的精度范围,计算结果为0。
  • gettimeofday()精度不足:在RP2040硬件上,该函数的底层实现并非基于高精度硬件定时器,无法捕捉微秒级的短时间间隔。

解决方案

方案1:使用硬件定时器(推荐,高精度)

直接用Arduino核心提供的micros()函数,它基于RP2040的硬件定时器,能精准返回微秒级时间戳,完美适配短时间间隔统计。

示例代码:

#include <stdio.h>

void setup() {
  unsigned long start_time = micros();

  // 替换为你的实际测试代码,比如:
  for (int i = 0; i < 10000; i++) {
    // 模拟计算耗时
    volatile int temp = i * i;
  }

  unsigned long end_time = micros();
  unsigned long elapsed_time = end_time - start_time;

  printf("Elapsed time in microseconds: %lu\n", elapsed_time);
}

void loop() {
}

方案2:初始化系统时间(若坚持用gettimeofday())

如果一定要使用gettimeofday(),必须先通过NTP同步系统时间,让函数能返回有效的时间戳。

示例代码:

#include <sys/time.h>
#include <stdio.h>
#include <WiFi.h>

// 替换为你的WiFi信息
const char* ssid = "YourWiFiSSID";
const char* password = "YourWiFiPassword";

void setup() {
  Serial.begin(115200);
  
  // 连接WiFi并同步NTP时间
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  
  // 设置东八区时区,同步NTP服务器
  configTime(8 * 3600, 0, "pool.ntp.org", "time.nist.gov");
  struct tm timeinfo;
  while (!getLocalTime(&timeinfo)) {
    Serial.println("Failed to get time");
    delay(1000);
  }

  struct timeval start_time;
  struct timeval end_time;

  gettimeofday(&start_time, NULL);

  // 模拟耗时操作
  delayMicroseconds(2000);

  gettimeofday(&end_time, NULL);

  long int elapsed_time = (end_time.tv_sec - start_time.tv_sec) * 1000000 + (end_time.tv_usec - start_time.tv_usec);

  printf("Elapsed time in microseconds: %ld\n", elapsed_time);
}

void loop() {
}

方案3:添加足够的耗时操作

如果只是测试代码为空导致时间差为0,在//code here部分添加实际的耗时逻辑(比如循环计算、GPIO操作等),让两次调用的间隔超过1微秒即可。

内容的提问来源于stack exchange,提问作者Seeker-IoT

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 03:40:21