/*
定时器中断测试程序
在Arduino中定时器有两种:
-硬件定时器,是ESP32芯片上内置的定时器,是专门设计用于定时和计时的硬件模块
-软件定时器,是通过编写代码在Arduino中模拟实现的定时器
硬件定时器:
在ESP32 Arduino 开发环境中,可以使用以下几个库函数来配置和操作硬件定时器(Timer):
1、void timerBegin(timer_num_t timer_num, unit32_t divider, bool count_up):初始化硬件定时器,参数说明:
- timer_num: 定时器编号,可选值0~3等。
- divider: 定时器的分频系数,用于设定定时器的时钟频率。较大的分频系数将降低定时器的时钟频率。一般设置80即可。
- count_up: 指定定时器是否为向上计数模式,true表示向上计数,false表示向下计数。
2、timerAttachInterrupt(hw_timer_t *timer, void (*isr)(void *), void *arg, int intr_type): 用于将中断处理函数与特定的定时器关联起来,参数如下:
- timer: 定时器指针。
- isr: 中断处理函数。
- arg: 传递给中断处理函数的参数
- intr_type: 中断类型,可选值为true(边沿触发)或false(电平触发)。
3、timerAlarmWrite(hw_timer_t *timer, uint64_t alarm_value, bool autoreload): 用于设置定时器的计数值,即定时器触发的时间间隔,参数如下:
- timer: 定时器指针;
- alarm_value: 定时器的计数值,即触发时间间隔;
- autoreload: 是否自动重载计数值,可选值为true(自动重载)或false(单次触发)。
4、timerAlarmEnable(hw_timer_t *timer): 用于启动定时器,使其开始计数;
5、timerAlarmDisable(hw_timer_t *timer): 用于禁用定时器,停止计数;
6、timerGetAutoReload(hw_timer_t *timer): 获取定时器是否自动重新加载;
7、timerAlarmRead(hw_timer_t *timer): 获取定时器计数器报警值;
8、timerStart(hw_timer_t *timer): 计数器开始计数;
9、timerStop(hw_timer_t *timer): 计数器停止计数;
10、timerRestart(hw_timer_t *timer): 计数器重新开始计数,从0开始;
11、timerStarted(hw_timer_t *timer): 计数器是否开始计数。
硬件定时器的基本使用步骤:
1、初始化定时器:使用timerBegin()函数初始化所需的硬件定时器;
2、注册中断处理函数: 使用timerAttachInterrupt() 函数将中断处理函数与定时器关联起来;
3、设置定时器模式: 使用timerAlarmWrite() 设置触发一次还是周期性触发;
4、启动定时器: 使用timerAlarmEnable() 函数启动定时器,使其开始计数。
*/
#define LED_PIN 11
void setup() {
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
}
void loop() {
digitalWrite(LED_PIN, !digitalRead(LED_PIN));
delay(1000);
}
Loading
esp32-s3-devkitc-1
esp32-s3-devkitc-1