0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何在Micropython+ESP32環(huán)境中使用定時(shí)器來實(shí)現(xiàn)各種實(shí)用功能

冬至子 ? 來源:醉里挑燈舞劍 ? 作者:Franze ? 2023-11-08 14:41 ? 次閱讀

引言

這個(gè)基礎(chǔ)系列的是為了完成一個(gè)智能家居系統(tǒng)。

定時(shí)器,顧名思義就是用來計(jì)時(shí)的。我們常常會(huì)設(shè)定計(jì)時(shí)或鬧鐘,然后時(shí)間到了就告訴我們要做什么了。單片機(jī)也是這樣,通過定時(shí)器可以完成各種預(yù)設(shè)好的任務(wù)。在這篇文章中,我們將介紹如何在Micropython+ESP32環(huán)境中使用定時(shí)器來實(shí)現(xiàn)各種實(shí)用的功能。

本次我們通過定時(shí)器讓 LED 周期性每秒閃爍 1 次。

材料準(zhǔn)備

  • ESP32開發(fā)板
  • LED燈
  • 220歐姆電阻
  • 面包板
  • USB數(shù)據(jù)線
  • 電腦

連接電路

圖片

編寫代碼

## 定時(shí)器的基本原理

在單片機(jī)中,定時(shí)器是一種硬件設(shè)備,用于產(chǎn)生精確的時(shí)間間隔。當(dāng)定時(shí)器到達(dá)設(shè)定的時(shí)間值時(shí),它會(huì)觸發(fā)一個(gè)事件,通知處理器執(zhí)行相應(yīng)的任務(wù)。在Micropython+ESP32中,我們可以使用machine.Timer類來創(chuàng)建和管理定時(shí)器。

ESP32-S3 內(nèi)置 RTOS(實(shí)時(shí)操作系統(tǒng))定時(shí)器,在 machine 的 Timer 模塊中。通過 MicroPython 可以輕松編程使用。我們也是只需要了解其構(gòu)造對象函數(shù)和使用方法即可。

代碼

反轉(zhuǎn)狀態(tài)方法一:

圖片

反轉(zhuǎn)狀態(tài)方法二:

圖片
上面用兩種不同的方法來實(shí)現(xiàn)狀態(tài)的反轉(zhuǎn)。

代碼簡說

代碼中的注釋很清晰了,還是分四步走,重點(diǎn)說明一下構(gòu)造函數(shù)和使用方法。

*構(gòu)造函數(shù):
t=machine.Timer(id) 構(gòu)建定時(shí)器對象
【id】ESP32-S3 有 2 路硬件定時(shí)器,id=0~1,也可以定義成-1,即RTOS 虛擬定時(shí)器
*使用方法:
tim.init(period,mode,callback) 定時(shí)器初始化

  • period:單位為 ms;
  • mode:2 種工作模式,Timer.ONE_SHOT(執(zhí)行一次)、Timer.PERIODIC(周期
    性);
  • callback:定時(shí)器中斷后的回調(diào)函數(shù)。

運(yùn)行程序

定時(shí)器到了預(yù)設(shè)指定時(shí)間后,也會(huì)產(chǎn)生中斷,因此跟外部中斷的編程方式類似。我們已經(jīng)創(chuàng)建了一個(gè)每隔1秒翻轉(zhuǎn)一次引腳狀態(tài)的定時(shí)器。你可以根據(jù)需要修改定時(shí)器的周期和回調(diào)函數(shù)來實(shí)現(xiàn)各種實(shí)用的功能。

總結(jié)

本節(jié)實(shí)驗(yàn)介紹了RTOS定時(shí)器的使用方式。雖然使用延時(shí)函數(shù)也可以實(shí)現(xiàn)類似的功能,但是相比于延時(shí)函數(shù),定時(shí)器具有不占用CPU資源的優(yōu)勢。

在傳統(tǒng)的程序設(shè)計(jì)中,我們常常使用延時(shí)函數(shù)來實(shí)現(xiàn)一些需要等待一段時(shí)間的操作。然而,這種方式會(huì)阻塞CPU的執(zhí)行,導(dǎo)致其他任務(wù)無法得到及時(shí)的處理。而使用定時(shí)器可以解決這個(gè)問題。

定時(shí)器是一種硬件設(shè)備,它可以在指定的時(shí)間間隔后觸發(fā)一個(gè)事件。通過設(shè)置定時(shí)器的周期和回調(diào)函數(shù),我們可以實(shí)現(xiàn)在特定的時(shí)間點(diǎn)執(zhí)行某個(gè)任務(wù),而不需要占用CPU的資源。這樣,其他的任務(wù)就可以在這段時(shí)間內(nèi)繼續(xù)執(zhí)行,提高了系統(tǒng)的并發(fā)性和響應(yīng)性。

在使用定時(shí)器時(shí),我們需要先初始化一個(gè)定時(shí)器對象,并設(shè)置其周期和回調(diào)函數(shù)。然后,通過調(diào)用定時(shí)器的啟動(dòng)方法,使其開始計(jì)時(shí)。當(dāng)定時(shí)器到達(dá)設(shè)定的時(shí)間值時(shí),它會(huì)觸發(fā)回調(diào)函數(shù)的執(zhí)行,從而實(shí)現(xiàn)我們想要的功能。

相比于延時(shí)函數(shù),定時(shí)器的好處在于它不會(huì)阻塞CPU的執(zhí)行。即使定時(shí)器正在計(jì)時(shí),CPU仍然可以繼續(xù)處理其他的任務(wù)。這樣可以提高系統(tǒng)的吞吐量和效率。此外,定時(shí)器還可以幫助我們實(shí)現(xiàn)更復(fù)雜的時(shí)間相關(guān)操作,如周期性的任務(wù)調(diào)度、事件觸發(fā)等。

總之,使用RTOS定時(shí)器可以提高系統(tǒng)的性能和效率。通過合理地設(shè)置定時(shí)器的周期和回調(diào)函數(shù),我們可以實(shí)現(xiàn)在特定時(shí)間點(diǎn)執(zhí)行任務(wù)的需求,而不需要占用CPU的資源。這使得我們能夠更好地管理系統(tǒng)的并發(fā)性和響應(yīng)性,提高系統(tǒng)的可靠性和穩(wěn)定性。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3218

    瀏覽量

    113711
  • RTOS
    +關(guān)注

    關(guān)注

    20

    文章

    804

    瀏覽量

    119123
  • 回調(diào)函數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    87

    瀏覽量

    11508
  • ESP32
    +關(guān)注

    關(guān)注

    17

    文章

    936

    瀏覽量

    16672
  • Micropython
    +關(guān)注

    關(guān)注

    0

    文章

    68

    瀏覽量

    4681
收藏 人收藏

    評論

    相關(guān)推薦

    ESP32 MicroPython 教程】定時(shí)器中斷

    ESP32
    YS YYDS
    發(fā)布于 :2023年05月12日 21:18:54

    何在ESP32上使用MicroPython

    ESP32移植MicroPython簡介安裝esptool下載MicroPython固件寫入固件連接Putty測試程序簡介本教程制作于Windows系統(tǒng)。通過python環(huán)境下運(yùn)行es
    發(fā)表于 01-11 07:58

    了解esp32環(huán)境搭建以及初識esp32

    esp32小車實(shí)驗(yàn)了解esp32呼吸燈實(shí)驗(yàn)驅(qū)動(dòng)直流電機(jī)認(rèn)識第一個(gè)傳感器使用wifi進(jìn)行調(diào)參了解esp32環(huán)境搭建以及初識esp32我們所用的
    發(fā)表于 02-24 06:31

    ESP32教程之如何在Windows系統(tǒng)上搭建開發(fā)環(huán)境

    本文檔的主要內(nèi)容詳細(xì)介紹的是ESP32教程之如何在Windows系統(tǒng)上搭建開發(fā)環(huán)境。
    發(fā)表于 12-13 15:34 ?40次下載
    <b class='flag-5'>ESP32</b>教程之如<b class='flag-5'>何在</b>Windows系統(tǒng)上搭建開發(fā)<b class='flag-5'>環(huán)境</b>

    ESP32環(huán)境搭建以及入門編程_esp32引腳圖

    本文主要介紹了ESP32環(huán)境搭建以及入門編程及ESP32的引腳圖。
    發(fā)表于 04-23 11:15 ?1.4w次閱讀
    <b class='flag-5'>ESP32</b><b class='flag-5'>環(huán)境</b>搭建以及入門編程_<b class='flag-5'>esp32</b>引腳圖

    ESP32ESP-IDF 教學(xué)(三)——通用硬件定時(shí)器(Timer)

    ESP32ESP-IDF 學(xué)習(xí)筆記(三)【通用硬件定時(shí)器(Timer)】文章目錄ESP32ESP-IDF 學(xué)習(xí)筆記(三)【通用硬
    發(fā)表于 11-26 11:36 ?37次下載
    <b class='flag-5'>ESP32</b> 之 <b class='flag-5'>ESP</b>-IDF 教學(xué)(三)——通用硬件<b class='flag-5'>定時(shí)器</b>(Timer)

    ESP32刷入MicroPython以及連接WiFi

    一、ESP32刷入MicroPython1.ESP32驅(qū)動(dòng)2.下載MicroPython3.刷入micropython4.進(jìn)入ESP32二、
    發(fā)表于 12-04 19:51 ?28次下載
    <b class='flag-5'>ESP32</b>刷入<b class='flag-5'>MicroPython</b>以及連接WiFi

    arduino / VScode+platformIO搭建esp32/esp8266編譯環(huán)境(一篇足矣)

    大大的贊吧!結(jié)尾還有micropython+esp32/esp8266環(huán)境搭建的入口,千萬不要錯(cuò)過哦~文章目錄arduino/VScode+platformIO 搭建esp32/
    發(fā)表于 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'>環(huán)境</b>(一篇足矣)

    ESP-32開發(fā)踩坑歷程(三)ESP-IDF 定時(shí)器使用

    ESP-32開發(fā)踩坑歷程(三)ESP-IDF 定時(shí)器使用前言一、開發(fā)基礎(chǔ)二、定時(shí)器使用1.官方描述2.讀入數(shù)據(jù)總結(jié)ESP-32開發(fā)踩坑歷程(
    發(fā)表于 12-08 12:06 ?13次下載
    <b class='flag-5'>ESP</b>-32開發(fā)踩坑歷程(三)<b class='flag-5'>ESP</b>-IDF <b class='flag-5'>定時(shí)器</b>使用

    使用MicroPython開發(fā)ESP32(01):快速入門

    文章目錄為什么使用MicroPython開發(fā)ESP32快速入門開發(fā)板準(zhǔn)備開發(fā)工具選擇固件下載與燒錄我的總結(jié)為什么使用MicroPython開發(fā)ESP32ESP32是非常熱門的一款物聯(lián)網(wǎng)
    發(fā)表于 12-29 18:49 ?22次下載
    使用<b class='flag-5'>MicroPython</b>開發(fā)<b class='flag-5'>ESP32</b>(01):快速入門

    何在ESP32/ESP8266上使用MicroPython

    在本教程中,我們將了解 MicroPython,它與 Python 有何不同,以及如何在 ESP32/ESP8266 上開始使用 MicroPyth
    發(fā)表于 08-19 15:09 ?1.3w次閱讀
    如<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的低功耗藍(lán)牙暗室定時(shí)器

    電子發(fā)燒友網(wǎng)站提供《基于ESP32的低功耗藍(lán)牙暗室定時(shí)器.zip》資料免費(fèi)下載
    發(fā)表于 02-09 11:53 ?0次下載
    基于<b class='flag-5'>ESP32</b>的低功耗藍(lán)牙暗室<b class='flag-5'>定時(shí)器</b>

    ESP32-C3硬件定時(shí)器簡介及使用

    ESP32-C3 有2個(gè)定時(shí)器組,每個(gè)組有2個(gè)定時(shí)器,共有4個(gè)定時(shí)器。
    的頭像 發(fā)表于 03-14 11:43 ?4290次閱讀
    <b class='flag-5'>ESP32</b>-C3硬件<b class='flag-5'>定時(shí)器</b>簡介及使用

    構(gòu)建ESP32 MicroPython Wifi的機(jī)器人汽車

    電子發(fā)燒友網(wǎng)站提供《構(gòu)建ESP32 MicroPython Wifi的機(jī)器人汽車.zip》資料免費(fèi)下載
    發(fā)表于 07-12 09:12 ?5次下載
    構(gòu)建<b class='flag-5'>ESP32</b> <b class='flag-5'>MicroPython</b> Wifi的機(jī)器人汽車

    何在Arduino IDE中安裝ESP32開發(fā)環(huán)境

    要在Arduino IDE中使ESP32開發(fā)板,您需要先安裝相應(yīng)的開發(fā)環(huán)境。以下是在Arduino IDE中安裝ESP32開發(fā)環(huán)境的步驟。
    的頭像 發(fā)表于 07-13 16:48 ?1.6w次閱讀
    如<b class='flag-5'>何在</b>Arduino IDE中安裝<b class='flag-5'>ESP32</b>開發(fā)<b class='flag-5'>環(huán)境</b>