一. 硬件定时器
ESP32 芯片包含两个硬件定时器组。每组有两个通用硬件定时器。它们都是基于 16 位预分频器和 64 位自动重载功能的向上/向下计数器的 64 位通用定时器。
1. 初始化定时器 timerBegin
hw_timer_t * timerBegin(uint8_t num, uint16_t divider, bool countUp){}
参数:
- num : 定时器编号
- divider:分频数
- countUp: 是否是累加模式
返回值:
返回一个计时器结构体指针 hw_timer_t * ,我们预定义一个指针接收他
hw_timer_t* tim1= NULL;
tim1 = timerBegin(0,80,true); //80MHZ, ESP32主频80MHz
2. 取消初始化定时器 timerEnd
void timerEnd(hw_timer_t *timer)
参数:
- *timer : 目标定时器 ( 计时器结构体指针 hw_timer_t * )
2. 配置定时器中断 timerAttachInterrupt
void timerAttachInterrupt(hw_timer_t timer, void (fn)(void), bool edge){}
参数:
- *timer : 目标定时器 ( 计时器结构体指针 hw_timer_t * )
- void (*fn)(void) : 中断函数入口地址
- 中断边沿触发 : 是否跳变沿触发中断 定时器中断触发方式有: 电平触发中断(level type) 边缘触发中断(edge type)
timerAttachInterrupt(tim1,tim1Interrupt,true);
4. 取消定时器中断 timerDetachInterrupt
void timerDetachInterrupt(hw_timer_t *timer)
5. 定时器设置timerAlarmWrite
void timerAlarmWrite(hw_timer_t *timer, uint64_t alarm_value, bool autoreload){}
参数:
- *timer : 目标定时器 ( 计时器结构体指针 hw_timer_t * )
- alarm_value : 计数上限值
- autoreload : 是否重装载.
timerAlarmWrite(tim1, 100000, true);
6. 使能定时器 timerAlarmEnable
void timerAlarmEnable(hw_timer_t *timer){}
参数:
- *timer : 目标定时器 ( 计时器结构体指针 hw_timer_t * )
timerAlarmEnable(tim1);
7. 失能定时器 timerAlarmDisable
void timerAlarmDisable(hw_timer