0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在Micropython+ESP32环境中使用定时器来实现各种实用功能

冬至子 来源:醉里挑灯舞剑 作者:Franze 2023-11-08 14:41 次阅读

引言

这个基础系列的是为了完成一个智能家居系统。

定时器,顾名思义就是用来计时的。我们常常会设定计时或闹钟,然后时间到了就告诉我们要做什么了。单片机也是这样,通过定时器可以完成各种预设好的任务。在这篇文章中,我们将介绍如何在Micropython+ESP32环境中使用定时器来实现各种实用的功能。

本次我们通过定时器让 LED 周期性每秒闪烁 1 次。

材料准备

连接电路

图片

编写代码

## 定时器的基本原理

在单片机中,定时器是一种硬件设备,用于产生精确的时间间隔。当定时器到达设定的时间值时,它会触发一个事件,通知处理器执行相应的任务。在Micropython+ESP32中,我们可以使用machine.Timer类来创建和管理定时器。

ESP32-S3 内置 RTOS(实时操作系统)定时器,在 machine 的 Timer 模块中。通过 MicroPython 可以轻松编程使用。我们也是只需要了解其构造对象函数和使用方法即可。

代码

反转状态方法一:

图片

反转状态方法二:

图片
上面用两种不同的方法来实现状态的反转。

代码简说

代码中的注释很清晰了,还是分四步走,重点说明一下构造函数和使用方法。

*构造函数:
t=machine.Timer(id) 构建定时器对象
【id】ESP32-S3 有 2 路硬件定时器,id=0~1,也可以定义成-1,即RTOS 虚拟定时器
*使用方法:
tim.init(period,mode,callback) 定时器初始化

  • period:单位为 ms;
  • mode:2 种工作模式,Timer.ONE_SHOT(执行一次)、Timer.PERIODIC(周期
    性);
  • callback:定时器中断后的回调函数。

运行程序

定时器到了预设指定时间后,也会产生中断,因此跟外部中断的编程方式类似。我们已经创建了一个每隔1秒翻转一次引脚状态的定时器。你可以根据需要修改定时器的周期和回调函数来实现各种实用的功能。

总结

本节实验介绍了RTOS定时器的使用方式。虽然使用延时函数也可以实现类似的功能,但是相比于延时函数,定时器具有不占用CPU资源的优势。

在传统的程序设计中,我们常常使用延时函数来实现一些需要等待一段时间的操作。然而,这种方式会阻塞CPU的执行,导致其他任务无法得到及时的处理。而使用定时器可以解决这个问题。

定时器是一种硬件设备,它可以在指定的时间间隔后触发一个事件。通过设置定时器的周期和回调函数,我们可以实现在特定的时间点执行某个任务,而不需要占用CPU的资源。这样,其他的任务就可以在这段时间内继续执行,提高了系统的并发性和响应性。

在使用定时器时,我们需要先初始化一个定时器对象,并设置其周期和回调函数。然后,通过调用定时器的启动方法,使其开始计时。当定时器到达设定的时间值时,它会触发回调函数的执行,从而实现我们想要的功能。

相比于延时函数,定时器的好处在于它不会阻塞CPU的执行。即使定时器正在计时,CPU仍然可以继续处理其他的任务。这样可以提高系统的吞吐量和效率。此外,定时器还可以帮助我们实现更复杂的时间相关操作,如周期性的任务调度、事件触发等。

总之,使用RTOS定时器可以提高系统的性能和效率。通过合理地设置定时器的周期和回调函数,我们可以实现在特定时间点执行任务的需求,而不需要占用CPU的资源。这使得我们能够更好地管理系统的并发性和响应性,提高系统的可靠性和稳定性。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 定时器
    +关注

    关注

    23

    文章

    3147

    浏览量

    112038
  • RTOS
    +关注

    关注

    20

    文章

    776

    浏览量

    118796
  • 回调函数
    +关注

    关注

    0

    文章

    87

    浏览量

    11455
  • ESP32
    +关注

    关注

    13

    文章

    896

    浏览量

    15814
  • Micropython
    +关注

    关注

    0

    文章

    68

    浏览量

    4582
收藏 人收藏

    评论

    相关推荐

    ESP32 MicroPython 教程】定时器中断

    ESP32
    YS YYDS
    发布于 :2023年05月12日 21:18:54

    【乐鑫ESP32-DevKitC-32D模组开发板试用连载】ESP32Micropython开发环境搭建

    ` MicroPython是 Python 3 语言 的精简高效实现 ,包括Python标准库的一小部分,经过优化可在微控制和受限环境中运行。Mi
    发表于 08-02 16:53

    虚拟机搭建esp32开发环境

    的第一盏 LED和中断回调实现按键功能 。 4、体会esp32的强大的定时器功能实现
    发表于 07-22 09:20

    为什么选择esp_timer定时器作为esp32首选软件定时器

    ESP32ESP-IDF 学习笔记(四)【高分辨率软件定时器esp_imer)】文章目录ESP32
    发表于 01-07 08:14

    何在ESP32上使用MicroPython

    ESP32移植MicroPython简介安装esptool下载MicroPython固件写入固件连接Putty测试程序简介本教程制作于Windows系统。通过python环境下运行es
    发表于 01-11 07:58

    了解esp32环境搭建以及初识esp32

    esp32小车实验了解esp32呼吸灯实验驱动直流电机认识第一个传感器使用wifi进行调参了解esp32环境搭建以及初识esp32我们所用的
    发表于 02-24 06:31

    ESP32定时器可以用来扫描HUB75D的LED32*16的显示屏吗?

    1,如题:ESP32定时器,可以用来扫描,HUB75D的LED32*16的显示屏吗?2,问题,我使用ESP32做一个时钟产品,HUB75D的LED32*16的显示屏,需要用一个
    发表于 02-14 07:43

    ESP32ESP-IDF 教学(三)——通用硬件定时器(Timer)

    ESP32ESP-IDF 学习笔记(三)【通用硬件定时器(Timer)】文章目录ESP32ESP-IDF 学习笔记(三)【通用硬
    发表于 11-26 11:36 37次下载
    <b class='flag-5'>ESP32</b> 之 <b class='flag-5'>ESP</b>-IDF 教学(三)——通用硬件<b class='flag-5'>定时器</b>(Timer)

    ESP32刷入MicroPython以及连接WiFi

    一、ESP32刷入MicroPython1.ESP32驱动2.下载MicroPython3.刷入micropython4.进入ESP32二、
    发表于 12-04 19:51 28次下载
    <b class='flag-5'>ESP32</b>刷入<b class='flag-5'>MicroPython</b>以及连接WiFi

    arduino / VScode+platformIO搭建esp32/esp8266编译环境(一篇足矣)

    大大的赞吧!结尾还有micropython+esp32/esp8266环境搭建的入口,千万不要错过哦~文章目录arduino/VScode+platformIO 搭建esp32/
    发表于 12-05 14:06 31次下载
    arduino / VScode+platformIO搭建<b class='flag-5'>esp32</b>/<b class='flag-5'>esp</b>8266编译<b class='flag-5'>环境</b>(一篇足矣)

    ESP-32开发踩坑历程(三)ESP-IDF 定时器使用

    ESP-32开发踩坑历程(三)ESP-IDF 定时器使用前言一、开发基础二、定时器使用1.官方描述2.读入数据总结ESP-32开发踩坑历程(
    发表于 12-08 12:06 13次下载
    <b class='flag-5'>ESP</b>-32开发踩坑历程(三)<b class='flag-5'>ESP</b>-IDF <b class='flag-5'>定时器</b>使用

    使用MicroPython开发ESP32(01):快速入门

    文章目录为什么使用MicroPython开发ESP32快速入门开发板准备开发工具选择固件下载与烧录我的总结为什么使用MicroPython开发ESP32ESP32是非常热门的一款物联网
    发表于 12-29 18:49 22次下载
    使用<b class='flag-5'>MicroPython</b>开发<b class='flag-5'>ESP32</b>(01):快速入门

    何在ESP32/ESP8266上使用MicroPython

    在本教程中,我们将了解 MicroPython,它与 Python 有何不同,以及如何在 ESP32/ESP8266 上开始使用 MicroPyth
    发表于 08-19 15:09 1.2w次阅读
    如<b class='flag-5'>何在</b><b class='flag-5'>ESP32</b>/<b class='flag-5'>ESP</b>8266上使用<b class='flag-5'>MicroPython</b>

    ESP32-C3硬件定时器简介及使用

    ESP32-C3 有2个定时器组,每个组有2个定时器,共有4个定时器
    的头像 发表于 03-14 11:43 3447次阅读
    <b class='flag-5'>ESP32</b>-C3硬件<b class='flag-5'>定时器</b>简介及使用

    何在Arduino IDE中安装ESP32开发环境

    要在Arduino IDE中使ESP32开发板,您需要先安装相应的开发环境。以下是在Arduino IDE中安装ESP32开发环境的步骤。
    的头像 发表于 07-13 16:48 1.2w次阅读
    如<b class='flag-5'>何在</b>Arduino IDE中安装<b class='flag-5'>ESP32</b>开发<b class='flag-5'>环境</b>