我正在使用 VSCode 编写 ESP32。我有以下简单的脚本:
#include <Arduino.h>
RTC_DATA_ATTR int counter1 = 0;
RTC_NOINIT_ATTR int counter2 = 0;
void setup() {
Serial.begin(115200);
Serial.printf("RTC programme running, counter1 = %d; counter2 = %d\n",counter1,counter2);
delay(3000);
counter1++;
counter2++;
esp_restart();
}
void loop() {
// nothing needed here
}
我希望输出是:
RTC programme running, counter1 = 0; counter2 = 0
RTC programme running, counter1 = 0; counter2 = 1
RTC programme running, counter1 = 0; counter2 = 2
...
但相反,我得到:
RTC programme running, counter1 = 0; counter2 = 109811943
RTC programme running, counter1 = 0; counter2 = 109811944
RTC programme running, counter1 = 0; counter2 = 109811945
...
(其中counter2的值是一个随机值)。我尝试了int、uint32_t等的各种组合,但仍然得到随机值。这是由RTC_NOINIT_ATTR定义引起的,但这是我最终应用程序所需要的。有什么我可以做的不同的事情吗?