文章作者:里海
来源网站:ESP32专栏
????在 Arduino 中操控 ESP32 时,有 硬件定时器 和 软件定时器 两种类型的定时器可供选择。它们具有不同的工作原理和用途。
????硬件定时器 是 ESP32 芯片上的内置计时器,它们是专门设计用于定时和计时任务的硬件模块。硬件定时器可以通过设置特定的寄存器来配置和控制,通常具有更高的精确度和稳定性。它们不受软件的影响,可以在后台独立运行,不会受到其他代码的干扰。硬件定时器适用于需要高精度和实时性的定时任务,例如 PWM 输出、捕获输入脉冲等。ESP32 具有 4 个硬件定时器。
????软件定时器 是通过编写代码在 Arduino 中模拟实现的定时器。它们不依赖于硬件模块,而是使用计数器变量来实现定时功能。软件定时器是基于延时循环的原理,在特定的时间间隔内执行特定的任务。但是,使用软件定时器时需要注意,它们可能会受到其他代码的影响而产生误差,特别是当涉及到需要精确时间控制的应用时,如通信协议处理、高速数据采集等。
使用板载led
硬件定时器例子
#include <Arduino.h>
int ledPin = 2;
void TimerInterrupt()
{
digitalWrite(ledPin,!digitalRead(ledPin));
}
void setup()
{
pinMode(ledPin,OUTPUT);
int num= 0;//定时器编号,可选值为 0-3
//定时器的分频系数,一般设置为80
int divider = 80;
//初始化定时器
hw_timer_t *timer = timerBegin(num, divider,true);
//配置定时器
timerAttachInterrupt(timer,TimerInterrupt,true);
//定时器模式
double sec = 1.0;
bool autoreload = true; //true自动重载或 false单次触发
timerAlarmWrite(timer, sec * 1000000, autoreload);
//启动定时器
timerAlarmEnable(timer);
}
void loop()
{
}
ESP32是近几年最受欢迎和最实用的模块之一。除了Wi-Fi模块,该模块还包含蓝牙4.0模块。双核CPU工作频率为80至240 MHz,包含两个Wi-Fi和蓝牙模块以及各种输入和输出引脚, ESP32是物联网项目的理想选择。
虽然ESP32的引脚数比常用的处理器少,但在引脚上复用多个功能时不会遇到任何问题。
警告:ESP32引脚的电压电平为3.3伏。如果要将ESP32连接到其他工作电压为5伏的设备,则应使用电平转换器转换电压电平。
ESP32芯片有5种模式: