📅  最后修改于: 2023-12-03 15:00:37.643000             🧑  作者: Mango
ESP32 timerBegin(0, cpuClock, true)
是一种用于ESP32开发板的C编程语言函数,用于初始化一个定时器并启动计时。
timerBegin(0, cpuClock, true)
需要传入三个参数:
0
:定时器编号,ESP32开发板上有多个定时器可用,编号从0开始。cpuClock
:CPU时钟频率,以Hz为单位,用于计算定时器时钟频率。true
:此参数为布尔型,表示是否启用定时器中断。以下为使用 ESP32 timerBegin(0, cpuClock, true)
的示例代码:
#include "soc/timer_group_struct.h"
#include "soc/timer_group_reg.h"
#define TIMER_DIVIDER 80 // 80 预分频因子,用于将 CPU 时钟频率分频为定时器时钟频率。
#define TIMER_SCALE (TIMER_BASE_CLK / TIMER_DIVIDER) // Timer的基本时钟频率。
#define TIMER_INTERVAL0_SEC (3.4179) // 定时器计时周期,以秒为单位。
void IRAM_ATTR onTimer()
{
static int cnt = 0;
cnt++;
Serial.print("定时器触发次数: ");
Serial.println(cnt);
}
void setup()
{
Serial.begin(115200);
ESP32 timerBegin(0, TIMER_SCALE, true);
timerAttachInterrupt(0, &onTimer, true);
timerAlarmWrite(0, TIMER_INTERVAL0_SEC * TIMER_SCALE, true);
timerAlarmEnable(0);
}
void loop()
{
}
该函数无返回值。
timerBegin()
函数前引入头文件 "soc/timer_group_struct.h" 和 "soc/timer_group_reg.h"。cpuClock
必须使用标准ESP32时钟频率或其倍数,否则会出现计时偏差。timerAlarmWrite()
函数设置。如果需要多次触发定时器,应使用 timerAlarmEnable()
函数启用定时器。