到了测试第6课,还没有玩过ESP32-C3的基本定时器,虽然FreeRTOS,可以使用软件定时器
但是软件定时器毕竟也有不适用的时候,这个在我FreeRTOS博文中有单独说明。
所以硬件定时器也得熟悉,同时附带简单用一下软件定时器。

目录

  • 前言
  • 1、 定时器基础介绍
  • 2、定时器示例测试
    • 2.1 IDF 示例测试
    • 2.2 软件定时器
      • 2.2.1 ESP-IDF 工程中查看FreeRTOS任务情况
      • 2.2.2 软件定时器简单测试

前言

接下来的ESP32-C3 功能测试都是基于自己设计的开发板:

自己画一块ESP32-C3 的开发板(第一次使用立创EDA)(PCB到手)

开发环境是乐鑫官方的 ESP-IDF, 基于VScode插件搭建好的:

ESP32-C3 VScode开发环境搭建(基于乐鑫官方ESP-IDF——Windows和Ubuntu双环境)

定时器的测试,我们直接使用串口打印看测试结果就可以了。

1、 定时器基础介绍

对于ESP32-C3 通用定时器的介绍,乐鑫的官网的说明链接如下:

乐鑫官方ESP32-C3 通用定时器部分说明

同时,在乐鑫官方 ESP32-C3 芯片手册《esp32-c3_technical_reference_manual_cn》文档第10章节中对于 TIMG 也有详细的介绍:

多余的话就不多说,这里主要是根据官方文档 配着代码说明一遍基本使用步骤:

  1. ESP32-C3有2个定时器组,每个组有2个定时器,共有4个定时器。
  2. 定时器使用 timer_config_t 结构体进行配置,然后初始化。

    比如示例中的初始化:
  3. 初始化以后,可以直接timer_start开启定时器,当然也可以进行一些配置,再开启定时器。
    使用timer_set_counter_value设置定时器的首个计数值:
    还有一些其他的专有函数也可以进行设置:

    在示例中只用到了timer_set_counter_value,如下图:
  4. 警报和中断,定时器开启以后,自然会有超时处理,或者中断处理相关的内容。把这些对于需要的功能配置号以后,就可以使用timer_start开启定时器:
    使用timer_set_alarm_value设置警报:
    使用timer_isr_callback_add给定时器注册中断回调函数:
    在示例中使用的方式如下:

至于细节和其他的问题,可以参考手册,下面我们通过官方的例程测试一下定时器的效果。

2、定时器示例测试

定时器测试我们还是先根据官方的例程展开。

2.1 IDF 示例测试

在官方的示例有关定时器的示例为 timer group,如下图:

这个定时器的例程功能简单,人人都可以编译下载观察,这里我根据自己的修改稍微简单的说明一下。

app_main一开始,创建了一个消息队列,然后初始化了2个定时器,其中一个设置为 3 秒报警的重装载定时器(使用的组0中的定时器0),另外一个设置为5秒报警的补充装载定时器(组1中的定时器0)。

定时器运行后,在while循环中,一开始就一直等待消息队列,显然只有等定时器发生了报警中断,在中断服务函数中发送了消息,while循环才接触阻塞执行下去。

接下来还会根据接收到的消息内容(示例中其实就是看是否是重装载定时器)来打印说明。

后面的打印都一样,获取计数器的值之类的。

如果直接用示例程序看打印结果,还是有点糊涂的,这里测试的时候我们一个定时器一个定时器来看,以便于更好的理解:

单独这个定时器运行的结果如下(很好理解):

那么来看一看另一个重装载定时器单独的测试结果:

从这两个单独的结果可以很好的理解定时器的运行,再加上上面的介绍,想把定时器用起来应该也不是什么难事。

2.2 软件定时器

既然使用了FreeRTOS操作系统,那么当然也可以使用软件定时器,在IDF的示例工程中,软件定时器
默认配置如下:

对应的在STM32CubeMX中的设置如下:

2.2.1 ESP-IDF 工程中查看FreeRTOS任务情况

还记得在我讲解 FreeRTOS记录的博文中,有说到过如何查看 FreeRTOS 的任务运行状态:

FreeRTOS记录(四、FreeRTOS任务堆栈溢出问题和临界区)

那么既然 ESP-IDF 工程使用的是FreeRTOS ,那么他当然也可以查看:

使能了任务信息查看,我们就可以打印出任务运行状态,这里,我们正好使用硬件定时器周期打印一下各任务的运行状态,简单修改一下代码,修改方式就和上面 FreeRTOS记录博文中的一样:

测试效果如下图(下图中应该是说错了,后来测试发现esp_timer并不是软件定时器任务……):

2.2.2 软件定时器简单测试

关于 FreeRTOS 软件定时器的问题可以参考博文:

FreeRTOS记录(八、FreeRTOS软件定时器)

我们这里在ESP32-C3上,也简单测试一下:

1、添加一下软件定时器头文件:

/2、程序中创建一个定时器,然后开启:

测试结果如下:

当初看到打印任务中有esp_timer 这个任务,以为是,后来才发现这个并不是软件定时器,至于这个是什么任务,后面学习到了再来说明。

ESP32-C3入门教程 基础篇(六、TIMG 硬件定时器 与 软件定时器)相关推荐

  1. ESP32-C3入门教程 基础篇⑪——Non-Volatile Storage (NVS) 非易失性存储参数的读写

    文章目录 一.前言 二.NVS介绍 三.操作流程 3.1 读操作流程 3.2 写操作流程 四.关键函数 五.随机整数 读写示例 六.对象/数组 读写示例 七.总结 八.参考 一.前言 本文基于VS C ...

  2. ESP32-C3入门教程 基础篇②——GPIO口输入,按键的长按和短按

    文章目录 一.前言 二.硬件准备 三.知识要点 3.1 GPIO使用 3.2 时钟节拍 四.参考例程 五.功能简述 六.源码实现 6.1 中断方式 6.2 定时扫描 七.源码详解 一.前言 本文基于V ...

  3. ESP32-C3入门教程 基础篇(八、NVS — 非易失性存储库的使用)

    前面的7节课把开发板上基本的外设都测试过一边,接下来马上就要进入wifi和蓝牙应用的测试了 在此之前,还需要把掉电数据保存的功能给实现,在STM32中,可以使用内部的flash或者有些自带的EEPRO ...

  4. ESP32-C3入门教程 基础篇(三、UART模块 — 与Enocean无线模块串口通信)

    测试第三课,ESP32-C3的串口通信测试 老样子,使用Enocean无线模块和ESP32-C3进行串口通信. 目录 前言 1.UART示例测试 1.1 UART 基础测试 1.2 与Enocean无 ...

  5. ESP32-C3入门教程 基础篇(四、I2C总线 — 与SHT21温湿度传感器通讯)

    测试第四课,了解ESP32-C3的 I2C 总线使用,与SHT21 温湿度传感器通讯 这一课把基础介绍放在前面,先看基本流程,再去修改代码 目录 前言 1. ESP32-C3 I2C基础介绍 1.1 ...

  6. 泰凌微8258入门教程 基础篇④——sig_mesh_sdk架构介绍

    文章目录 一.前言 二.SDK文件架构 三.SDK Demo Project 四.vendor文件架构 4.1 common 4.2 Demo Project目录 五.产品类型定义 一.前言 本系列的 ...

  7. 泰凌微8258入门教程 基础篇⑦——Flash结构和OTA流程

    文章目录 一.Flash存储架构 二.启始地址设置 三.MCU开机流程 四.OTA更新流程 五.OTA数据packet格式 5.1 OTA cmd 5.2 OTA data 六.回调函数 6.1 OT ...

  8. 泰凌微8258入门教程 基础篇⑤——发送数据流程

    文章目录 一.Sig Mesh协议 二.Sig SDK 流程图 三.mesh_tx_cmd 四.增加Log 五.调试 一.Sig Mesh协议 二.Sig SDK 流程图 Created with R ...

  9. 【SQL Server】入门教程-基础篇(三)

    目录

最新文章

  1. LeetCode Largest Number(排序)
  2. 软考高项之进度管理——攻坚记忆
  3. php维持登录,php怎么保持登录状态?
  4. JZOJ 3786. 【NOI2015模拟8.19】图
  5. 同步异步单线程多线程初级理解
  6. mysql数据库部分操作指令
  7. [机器学习笔记]Note11--聚类
  8. 经典面试题(44):以下代码将输出的结果是什么?
  9. 磁盘性能分析一:IO负载高的判断详解
  10. Druid.jar包
  11. 阿里云ECS更换系统时提示主机名不支持windows镜像要求的解决方法
  12. 计算机怎么语音通话,微信电脑版怎么语音聊天?微信电脑版语音聊天教程
  13. IOS 音乐播放器 (附源码)
  14. AURIX Development Studio软件介绍
  15. 数据结构——图的创建以及遍历
  16. Zephyr MCUBoot
  17. jpa整合querydsl实现简单查询以及左联查询
  18. html改变复选框颜色,如何利用纯CSS改变html?radio/checkbox默认背景颜色样式
  19. 音频立体声转单声道(音频双通道转单通道)
  20. 小白计算机视觉学习报告

热门文章

  1. win10注册mscomm32.ocx失败
  2. laravel评价详情及商家回复api
  3. 网站地图(sitemap)如何优雅生成?
  4. zed相机拆机_TX1入门教程硬件篇-外接双目相机ZED
  5. 计算机语言怎么学,教你如何学习计算机编程语言
  6. 参加网络安全培训班学习,就业有哪些方向?
  7. 弘辽科技:淘宝店铺出现异常,卖家该如何应对?要注意些什么?
  8. 寒武纪笔试——嵌入式
  9. 09|自研or借力(下):集成Gin替换已有核心
  10. 马赛克颗粒感天空Canvasjs特效