arduino esp32 看门狗_ESP32定时器使用

本文介绍了ESP32中的定时器结构,包括2组各两个64位定时器及看门狗定时器。每个定时器基于80MHz的APB时钟,通过设置分频值和计数值实现所需定时中断。以代码示例详细说明了如何配置定时器产生1秒中断,并注册中断服务函数,实现定时器中断的处理流程。
摘要由CSDN通过智能技术生成

esp32定时器一共有2组,每组有两个,每个定时器都是64位的。每一组还会包含一个看门狗定时器。结构如下:

定时器

定时器组0定时器0

定时器1

WDT定时器

定时器组1定时器0

定时器1

WDT定时器

定时器时钟:

每个定时器都以 APB 时钟(缩写 APB_CLK,频率通常为 80 MHz)作为基础时钟

。知道了时钟频率就好配置分频值和计数值来产生自己想要的定时中断。

例如我需要1s中产生一次定时器中断;我可以把分频值设为80,这个计数器的频率为80mhz/80=1mhz,也就是1us计数器会记一个值。然后我再设定计数到1000000产生alarm中断。1us*1000000=1s

下面用代码解释下具体如何配置产生1s的定时器中断:

定时器初始化

使用的是定时器组0的定时器0,简称为timer00

void timer00_init()

{

timer_config_t config;

config.divider = 80; //分频值,默认时钟是80mhz

config.counter_dir = TIMER_COUNT_UP;

config.counter_en = TIMER_PAUSE;

config.alarm_en = TIMER_ALARM_EN;

config.intr_type = TIMER_INTR_LEVEL;

config.auto_reload = 1; //使能自动装载

timer_init(TIMER_GROUP_0,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值