【esp32学习之路7——硬件定时器】

一、概述

ESP32 的定时器分为 2 组,每组 2 个。ESP32 内置 4 个 64-bit 通用定时器。每个定时器包含一个 16-bit 预分频器和一个64-bit 可自动重新加载向上/向下计数器。详情可参考乐鑫文档

二、操作步骤

1、定时器初始化 - 启动定时器前应设置的参数,以及每个设置提供的具体功能。

2、定时器控制 - 如何读取定时器的值,如何暂停/启动定时器以及如何改变定时器的操作方式。

3、警报 - 如何设置和使用警报。

4、处理中断事务- 如何使用中断提供的回调函数。

知识点:
1、赫兹和秒的换算
HZ是频率的单位,是指每秒的周期次数(周期/秒);秒是时间的单位;f=1/T,T是周期。(其中f是指赫兹,T是指以秒为单位,10HZ即10次/秒)
1 HZ (1秒)1 kHz = 1 000 Hz(1MS) 1 MHz = 1 000 000Hz(1微秒)
2,分频器:分频就是把系统工作频率分频后当做定时器的工作频率;ESP32的输入时钟频率为80MHZ,就是1/80us=0.0125us计数器就会计数加一,如果设置分频系数为80,则1us就会计数加一,分频系数范围是0-65536

三、代码实现

下面用硬件定时器加中断实现一个1SLED的翻转,代码如下:

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/queue.h"
#include "driver/timer.h"
#include "driver/gpio.h"

#define TIMER_DIVIDER         (16)  //  Hardware timer clock divider
// convert counter value to seconds 80*1 000 000 HZ / 16 = 5 * 1 000 000 HZ
#define TIMER_SCALE           
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值