引言
這個基礎系列的是為了完成一個智能家居系統(tǒng)。
定時器,顧名思義就是用來計時的。我們常常會設定計時或鬧鐘,然后時間到了就告訴我們要做什么了。單片機也是這樣,通過定時器可以完成各種預設好的任務。在這篇文章中,我們將介紹如何在Micropython+ESP32環(huán)境中使用定時器來實現(xiàn)各種實用的功能。
本次我們通過定時器讓 LED 周期性每秒閃爍 1 次。
材料準備
連接電路
編寫代碼
## 定時器的基本原理
在單片機中,定時器是一種硬件設備,用于產(chǎn)生精確的時間間隔。當定時器到達設定的時間值時,它會觸發(fā)一個事件,通知處理器執(zhí)行相應的任務。在Micropython+ESP32中,我們可以使用machine.Timer
類來創(chuàng)建和管理定時器。
ESP32-S3 內(nèi)置 RTOS(實時操作系統(tǒng))定時器,在 machine 的 Timer 模塊中。通過 MicroPython 可以輕松編程使用。我們也是只需要了解其構造對象函數(shù)和使用方法即可。
代碼
反轉狀態(tài)方法一:
反轉狀態(tài)方法二:
上面用兩種不同的方法來實現(xiàn)狀態(tài)的反轉。
代碼簡說
代碼中的注釋很清晰了,還是分四步走,重點說明一下構造函數(shù)和使用方法。
*構造函數(shù):
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(執(zhí)行一次)、Timer.PERIODIC(周期
性); - callback:定時器中斷后的回調(diào)函數(shù)。
運行程序
定時器到了預設指定時間后,也會產(chǎn)生中斷,因此跟外部中斷的編程方式類似。我們已經(jīng)創(chuàng)建了一個每隔1秒翻轉一次引腳狀態(tài)的定時器。你可以根據(jù)需要修改定時器的周期和回調(diào)函數(shù)來實現(xiàn)各種實用的功能。
總結
本節(jié)實驗介紹了RTOS定時器的使用方式。雖然使用延時函數(shù)也可以實現(xiàn)類似的功能,但是相比于延時函數(shù),定時器具有不占用CPU資源的優(yōu)勢。
在傳統(tǒng)的程序設計中,我們常常使用延時函數(shù)來實現(xiàn)一些需要等待一段時間的操作。然而,這種方式會阻塞CPU的執(zhí)行,導致其他任務無法得到及時的處理。而使用定時器可以解決這個問題。
定時器是一種硬件設備,它可以在指定的時間間隔后觸發(fā)一個事件。通過設置定時器的周期和回調(diào)函數(shù),我們可以實現(xiàn)在特定的時間點執(zhí)行某個任務,而不需要占用CPU的資源。這樣,其他的任務就可以在這段時間內(nèi)繼續(xù)執(zhí)行,提高了系統(tǒng)的并發(fā)性和響應性。
在使用定時器時,我們需要先初始化一個定時器對象,并設置其周期和回調(diào)函數(shù)。然后,通過調(diào)用定時器的啟動方法,使其開始計時。當定時器到達設定的時間值時,它會觸發(fā)回調(diào)函數(shù)的執(zhí)行,從而實現(xiàn)我們想要的功能。
相比于延時函數(shù),定時器的好處在于它不會阻塞CPU的執(zhí)行。即使定時器正在計時,CPU仍然可以繼續(xù)處理其他的任務。這樣可以提高系統(tǒng)的吞吐量和效率。此外,定時器還可以幫助我們實現(xiàn)更復雜的時間相關操作,如周期性的任務調(diào)度、事件觸發(fā)等。
總之,使用RTOS定時器可以提高系統(tǒng)的性能和效率。通過合理地設置定時器的周期和回調(diào)函數(shù),我們可以實現(xiàn)在特定時間點執(zhí)行任務的需求,而不需要占用CPU的資源。這使得我們能夠更好地管理系統(tǒng)的并發(fā)性和響應性,提高系統(tǒng)的可靠性和穩(wěn)定性。
-
定時器
+關注
關注
23文章
3287瀏覽量
117197 -
RTOS
+關注
關注
24文章
840瀏覽量
120749 -
回調(diào)函數(shù)
+關注
關注
0文章
88瀏覽量
11822 -
ESP32
+關注
關注
20文章
1006瀏覽量
18821 -
Micropython
+關注
關注
0文章
68瀏覽量
5135
發(fā)布評論請先 登錄

如何在ESP32上使用MicroPython
了解esp32環(huán)境搭建以及初識esp32
ESP32硬定時器可以用來掃描HUB75D的LED32*16的顯示屏嗎?
ESP32教程之如何在Windows系統(tǒng)上搭建開發(fā)環(huán)境

ESP32 之 ESP-IDF 教學(三)——通用硬件定時器(Timer)

ESP32刷入MicroPython以及連接WiFi

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

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

如何在ESP32/ESP8266上使用MicroPython

構建ESP32 MicroPython Wifi的機器人汽車

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

評論