【Micropython ESP32】定时器Timer

2024-03-17 13:44

本文主要是介绍【Micropython ESP32】定时器Timer,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、分频系数
    • 1.1 为什么需要分频系数
    • 1.2 分频系数怎么计算
  • 二、如何使用定时器
    • 2.1 定时器构造函数
    • 2.2 定时器初始化
    • 2.3 关闭定时器
  • 三、定时器示例代码
  • 总结


前言

在MicroPython中,ESP32微控制器提供了丰富的功能,其中之一是定时器(Timer)。定时器允许您在预定义的时间间隔内执行特定的任务,这对于许多应用程序都是非常有用的。本文将介绍如何使用MicroPython中的ESP32定时器(Timer)功能。


一、分频系数

1.1 为什么需要分频系数

首先我们需要知道怎么算一个时钟的周期,他有下面这个公式计算:
在这里插入图片描述
在72MHz的CPU中,他每一个时钟周期的频率就是
在这里插入图片描述

预分频系数一般是用在计时器中的,在计时器中,他的原理就是计数,计数到指定产生一个中断而已,
计数器寄存器为16位寄存器,他可以存储最大0xFFFF个数据,当有一个时钟过来的时候,他的计数值+1,那么我们就可以计算他的中断产生一次多少us了。当从0计数到0xFFFF时,我们可以计算出他的时间为大约910us,那如果我们1ms或者1us产生中断怎么办,现在这样就不够用了啊,这样就出现了我们的分频系数,他的原理就是在计数寄存器前面在加一个计数的,这样达到分频的效果

1.2 分频系数怎么计算

如果我们设置分频系数为1时,他会从0计数到1,再到0,到0时他发出一个时钟周期,这样输入给计数器的时钟频率就只有36MHz了,再通过计数器的原理就可以发现他的中断时间延长了,比如说我的分频系数为10,那么我们可以进行计算他一次中断的时间:
分频系数为10的时候,计数器得到的时钟频率为7.2MHz,他的周期为
在这里插入图片描述
那么一个周期为1.3889us,如果计数器为0~0xFFFF,则我们可以算出一次中断的时间为:大约91,021.5615us一次中断

二、如何使用定时器

2.1 定时器构造函数

Timer构造函数如下:

class machine.Timer(id, /, ...)

参数id构造给定 id 的 Timer 对象

2.2 定时器初始化

使用下面这个函数对定时器进行初始化:

Timer.init(*, mode=Timer.PERIODIC, freq=-1, period=-1, callback=None)

在这里插入图片描述

2.3 关闭定时器

我们可以使用下面这个函数来关闭定时器:

Timer.deinit()

三、定时器示例代码

import machine
import time# 定义定时器回调函数
def timer_callback(timer):print("定时器触发!")# 初始化定时器
timer = machine.Timer(1)# 设置定时器间隔为1秒,并注册回调函数
timer.init(period=1000, mode=machine.Timer.PERIODIC, callback=timer_callback)# 让程序持续运行,观察定时器是否触发
while True:time.sleep(1)

在这里插入图片描述


总结

ESP32的定时器(Timer)功能为MicroPython用户提供了一种方便的方式来执行周期性任务。通过使用定时器,您可以在指定的时间间隔内执行特定的操作,从而实现定时触发的功能。这对于许多应用程序,如数据采集、定时控制和任务调度等,都是非常有用的。希望本文介绍的ESP32定时器功能能够帮助您更好地利用MicroPython进行开发。

这篇关于【Micropython ESP32】定时器Timer的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/819134

相关文章

【Qt】定时器事件

定时器事件 在之前学习QTimer中实现了定时器的功能,而在QTimer背后是QTimerEvent定时器事件进行支撑的。在QObject中提供了一个timeEvent这个函数。 startTimer启动定时器killTimer关闭定时器 Qt 中在进⾏窗⼝程序的处理过程中,经常要周期性的执⾏某些操作,或者制作⼀些动画效果,使⽤定 时器就可以实现。所谓定时器就是在间隔⼀定时间后,去执⾏某⼀

独立按键单击检测(延时消抖+定时器扫描)

目录 独立按键简介 按键抖动 模块接线 延时消抖 Key.h Key.c 定时器扫描按键代码 Key.h Key.c main.c 思考  MultiButton按键驱动 独立按键简介 ​ 轻触按键相当于一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通与断开。  ​ 按键抖动 由于按键内部使用的是机

WIN11 ESP32 IDF + VSCODE 环境搭建[教程向]

前言 目录 前言 安装ESP32-IDF VSCODE插件安装 编译测试 很多时候我们想学习一门新的技能,需要使用全新的开发环境,很多时候我们会在安装环境这个环节卡住很久,这里简单介绍一下ESP32+VSCODE环境搭建。 安装ESP32-IDF https://dl.espressif.cn/dl/esp-idf/?idf=4.4 直接复制上面链接,进入idf下载界面。

【JavaScript】在循环体中了解定时器工作机制

for (var i = 0; i < 5; i++) {setTimeout(function() {console.log(i);}, 1000);}console.log(i);   如果我们约定,用箭头表示其前后的两次输出之间有 1 秒的时间间隔,而逗号表示其前后的两次输出之间的时间间隔可以忽略,代码实际运行的结果该如何描述?会有下面两种答案: A. :5 -> 5 -> 5 ->

4.15 版本内核调用 init_timer()函数出错

linux/include/linux/timer.h4.15 之前版本struct timer_list {14 /*15 * All fields that change during normal runtime grouped to the16 * same cacheline17 */18 struct hl

WebAPI (一)DOM树、DOM对象,操作元素样式(style className,classList)。表单元素属性。自定义属性。间歇函数定时器

文章目录 Web API基本认知一、 变量声明二、 DOM1. DOM 树2. DOM对象3. 获取DOM对象(1)、选择匹配的第一个元素(2)、选择匹配多个元素 三、 操作元素1. 操作元素内容2. 操作元素属性(1)、常用属性(href之类的)(2)、通过style属性操作CSS(3)、通过类名(className)操作CSS(4)、通过classList操作控制CSS(5)、操作表单

深入理解C语言中的POSIX定时器

引言 在Unix和类Unix系统中,定时器是一种常见的机制,用于在特定时间间隔后执行某些操作。POSIX定时器因其灵活性和功能丰富而被广泛采用。本文将深入探讨POSIX定时器的工作原理、内部机制、使用方法及其在实际开发中的应用。 POSIX定时器基础 POSIX定时器是一种高级定时器接口,它允许用户创建定时器并指定定时器到期时的动作。POSIX定时器支持以下特性: 信号通知:定时器到

基于MicroPython的ESP8266控制七段数码管的设计方案

以下是一个基于MicroPython的ESP8266控制七段数码管的设计方案: 一、硬件准备 1. ESP8266开发板(如NodeMCU)             2. 七段数码管(共阳或共阴型)                      3. 限流电阻(根据数码管的电流要求选择合适的阻值

Android AnalogClock TextClock DigitalClock Chronometer 时钟 定时器

AnalogClock 相关属性:  android:dial="@drawable/img1" //表盘android:hand_hour="@drawable/alert_dialog_icon" //时针android:hand_minute="@drawable/alert_dialog_icon" //分针 TextClock 相关属性: android:f

java AWT 绘图,实现弹球游戏,有实现keylistener,timer功能

Timer(int delay, ActionListener listener):每间隔delay毫秒,系统自动触发ActionListener监听器里的事件处理器(actionPerformed()方法)。 package javaAWT;import java.awt.Canvas;import java.awt.Color;import java.awt.Dimension;imp