🥕 hw_timer_t * timer = NULL;
hw_timer_t* timer = nullptr;
在 ESP32 上,hw_timer_t *timer 是一個指標變數的宣告。這裡的星號(*)表示它是一個指標,而 hw_timer_t 則是指標所指向的資料型別。hw_timer_t 是 ESP32 提供的硬體計時器(hardware timer)的資料型別。這個指標 timer 將用來指向一個 hw_timer_t 型別的變數或結構體。這行程式碼聲明了一個指標 timer,可以用來操作 ESP32 上的硬體計時器。nullptr空指標
🥕硬體計時器範例: 每隔2秒印出hello
//分頻(prescaler)用於設定計時器的時脈頻率。時脈頻率指的是計時器每秒中觸發的次數。
//計時器每秒會觸發1x10的6次方次。分頻值越大,時脈頻率越低,計時器的計數間隔越長。分頻值設定為 80,計時器每秒會觸發1百萬 次。分頻值設定為 100,那麼計時器每秒會觸發80萬次。
#include <Arduino.h>
hw_timer_t *timer = NULL;
void timerCallback() {
Serial.println("Hello");
}
void setup() {
Serial.begin(115200);
// 初始化硬體計時器
timer = timerBegin(0, 80, true); // 使用 Timer 0,分頻為 80
timerAttachInterrupt(timer, &timerCallback, true); // 連接中斷服務函數
timerAlarmWrite(timer, 2000000, true); // 設定計時器觸發時間為 2 秒
timerAlarmEnable(timer); // 啟用計時器
}
void loop() {
// 主要程式碼,這裡不需要放置任何東西
}