ESP32 定时器库函数使用方法

这个实验的功能演示 ESP32 定时器的使用方法。 这个实验的代码为工程“3_10_timer”目录。
3.10.1. 实验内容

(1) 学习 LED 灯控制
(2) 学习 ESP32 定时器库函数使用方法
(3) 根据定时器控制红灯闪烁

3.10.2. 硬件原理

这个实验使用到的硬件是彩灯上的红灯,如何实现控制返回看 3.3.2 节即可。

3.10.3. ESP32 定时器函数介绍

定时器的使用流程就是定时器初始化、创建和启动,启动完成后,会周期执行回调函数。在有些使用 场合有可能会需要需要停止和删除定时器,框图如图:
在这里插入图片描述

 定时器创建和初始化
创建定时器函数定义:
esp_err_t esp_timer_create(const esp_timer_create_args_t* create_args,
esp_timer_handle_t* out_handle);
参数说明:
esp_timer_create_args_t* create_args:定时器初始化参数,具体的定义请往下看 esp_timer_handle_t* out_handle:这是返回值,创建的定时器的句柄
返回值:ESP_OK(成功) 。

 定时器启动
定时器周期启动函数定义:
esp_err_t esp_timer_start_periodic(esp_timer_handle_t timer, uint64_t period); 参数说明:
esp_timer_handle_t timer:定时器句柄
uint64_t period:定时器的周期,单位为微秒,如果定时 1 秒写 1000*1000。 返回值:ESP_OK(成功)。

定时器单次启动函数定义:
esp_err_t esp_timer_start_once(esp_timer_handle_t timer, uint64_t timeout_us); 参数说明:
esp_timer_handle_t timer:定时器句柄
uint64_t timeout_us:定时器的周期,单位为微秒,如果定时 1 秒写 1000*1000。 返回值:ESP_OK(成功)。

 定时器停止
函数定义:
esp_err_t esp_timer_stop(esp_timer_handle_t timer); 参数说明:
esp_timer_handle_t timer:定时器句柄 返回值:ESP_OK(成功) 。

 定时器删除

函数定义:
esp_err_t esp_timer_delete(esp_timer_handle_t timer); 参数说明:
esp_timer_handle_t timer:定时器句柄 返回值:ESP_OK(成功) 。

3.10.4. 代码讲解

使用 vs code 展开本实验的工程目录,如下图:
在这里插入图片描述

我们的这个实验,定时器的代码是写在源文件 app_main.c 里,led 文件夹是关于 LED 的驱动代码,LED 的驱动代码在 3.3 章有比较详情的讲解。
我们打开源文件 app_main.c 查看主函数入口 app_main(),在这个函数里初始化了 LED 灯,创建和启动 了定时器:

//用户函数入口,相当于 main 函数
void  app_main() {
initLed();//LED 初始化

//定时器结构体初始化 esp_timer_create_args_t  fw_timer =
{
.callback  = 
//定时器创建
esp_err_t  err  =  esp_timer_create(&fw_timer, &fw_timer_handle);
//周期定时器启动
err = esp_timer_start_periodic(fw_timer_handle, 1000 * 1000);//1 秒回调 if(err  == ESP_OK)
{
printf("timer1  cteate  and  start ok!\r\n");

 	}

定时器的回调函数 1 秒执行 1 次,根据 led_flag 标志决定是亮灯还是灭灯,如下图:

void  fw_timer_cb(void *arg)
{
//根据 LED 状态闪灯 if(led_flag>0)
{
led_red(LED_ON); led_flag=0;
}
else
{
led_red(LED_OFF); led_flag=1;
}
}

3.10.5. 实验过程

配置下载串口、波特率、编绎和程序下载的详细过程请往回看 3.1.4,在这个实验里都是一笔带过。 (1) 把开发板通过 USB 线接到电脑上,通过设备管理器查看生成的串口。开发板在我们演示电脑上生
成的是 COM3。
(2) 在 menuconfig 菜单里配置下载程序串口。提供的例程配置的串口是 COM3,波特率为 921600。
(3) 通过 make all 编绎工程。
(4) 当编绎通过之后,使用命令 make flash 把程序下载到开发板上。或者参考 2.3.2 节,使用工具 下载。
(5) 按下开发板的复位键,让程序运行起来,观察彩灯的红灯闪烁过程。

(6) 可以修改定时器的时间,改变灯光闪烁频率。

最后推荐一款开发套件,可以手淘扫码查看。
在这里插入图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bytechip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值