娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

ESP32學習筆記(3)——高分辨率定時器接口使用

發布者:SparklingMelody最新更新時間:2025-03-04 來源: jianshu關鍵字:ESP32  高分辨率  定時器 手機看文章 掃描二維碼
隨時隨地手機看文章

一、概述

盡管FreeRTOS提供了軟件計時器,但是這些計時器有一些限制:

  • 最大分辨率等于RTOS滴答周期

  • 計時器回調從低優先級任務分派

硬件計時器不受這兩個限制,但是通常它們使用起來不太方便。例如,應用組件可能需要計時器事件在將來的特定時間觸發,但是硬件計時器僅包含一個用于生成中斷的“比較”值。這意味著需要在硬件計時器之上構建一些設施,以管理掛起事件列表,以便在發生相應的硬件中斷時可以調度這些事件的回調。

esp_timer一組API提供了這種功能。在內部,esp_timer使用64位硬件計時器(CONFIG_ESP_TIMER_IMPL)。esp_timer提供一次性計時器和周期計時器,微秒時間分辨率和64位范圍。

計時器回調是從高優先級esp_timer任務分派的。因為所有回調都是從同一任務分派的,因此,回調不應該做太多工作;相反,它們應該使用RTOS通知機制(隊列、信號量、事件組等)來將信息傳遞給其他任務。

如果其他優先級高于esp_timer運行的任務正在運行,則回調調度將被延遲,直到esp_timer任務有機會運行為止。例如,如果正在進行SPI Flash操作,則會發生這種情況。

創建和啟動計時器以及調度回調需要一些時間。因此,單發超時值有一個下限esp_timer。如果esp_timer_start_once()調用的超時值小于20us,則僅在大約20us之后才調度回調。

周期性esp_timer還會對最小計時器周期施加50us的限制。周期小于50us的定期軟件計時器不切實際,因為它們會占用大部分CPU時間。如果發現需要一個短周期的計時器,請考慮使用專用的硬件外設或DMA功能。

ESP-IDF 編程指南——高分辨率定時器

二、API說明

以下軟件定時器接口位于 esp_timer/include/esp_timer.h。

2.1 esp_timer_init

2.2 esp_timer_deinit

2.3 esp_timer_create

2.4 esp_timer_start_once

2.5 esp_timer_start_periodic

2.6 esp_timer_stop

2.7 esp_timer_delete

2.8 esp_timer_get_time


三、一次性定時器

3.1 定義相關變量

// 定義定時器句柄esp_timer_handle_t test_o_handle = 0;// 定義一個單次運行的定時器結構體esp_timer_create_args_t test_once_arg = { 

    .callback = &test_timer_once_cb,  // 設置回調函數

    .arg = NULL,                      // 不攜帶參數

    .name = 'TestOnceTimer'           // 定時器名字};

3.2 定義定時器回調函數

void test_timer_once_cb(void *arg) {

    int64_t tick = esp_timer_get_time();

    printf('方法回調名字: %s , 距離定時器開啟時間間隔 = %lld rn', __func__, tick);

    esp_err_t err = esp_timer_delete(test_o_handle);

    printf('要刪除的定時器名字:%s , 是否停止成功:%s', test_once_arg.name,

            err == ESP_OK ? 'ok!rn' : 'failed!rn');}

要在不再需要計時器時刪除它,請調用esp_timer_delete()。


3.3 創建定時器

#include 'esp_timer.h'void app_main(void){

    esp_timer_init(); // 使用定時器API函數,先調用接口初始化


    // 開始創建一個單次周期的定時器并且執行

    esp_timer_create(&test_once_arg, &test_o_handle);

    esp_timer_start_once(test_o_handle, 10 * 1000 * 1000);

    while(1) 

    {

        vTaskDelay(1000 / portTICK_PERIOD_MS);

    }}

3.4 查看打印


四、周期定時器

4.1 定義相關變量

// 定義定時器句柄esp_timer_handle_t test_p_handle = 0;// 定義一個周期重復運行的定時器結構體esp_timer_create_args_t test_periodic_arg = { 

    .callback = &test_timer_periodic_cb, // 設置回調函數

    .arg = NULL,                         // 不攜帶參數

    .name = 'TestPeriodicTimer'          // 定時器名字};

4.2 定義定時器回調函數

void test_timer_periodic_cb(void *arg) {

    int64_t tick = esp_timer_get_time();

    printf('方法回調名字: %s , 距離定時器開啟時間間隔 = %lld rn', __func__, tick);


    if(tick > 100000000)

    {

        // 停止定時器工作,并獲取是否停止成功

        esp_err_t err = esp_timer_stop(test_p_handle);

        printf('要停止的定時器名字:%s , 是否停止成功:%s', test_periodic_arg.name,

                err == ESP_OK ? 'ok!rn' : 'failed!rn');

        err = esp_timer_delete(test_p_handle);

        printf('要刪除的定時器名字:%s , 是否停止成功:%s', test_periodic_arg.name,

                err == ESP_OK ? 'ok!rn' : 'failed!rn');

    }}

要在不再需要計時器時刪除它,請調用esp_timer_delete()。


請注意,當esp_timer_start_once()或esp_timer_start_periodic()調用計時器時,計時器一定不能運行。要重新啟動正在運行的計時器,esp_timer_stop()請先調用,然后調用啟動功能之一。


4.3 創建定時器

#include 'esp_timer.h'void app_main(void){

    esp_timer_init(); // 使用定時器API函數,先調用接口初始化


    // 開始創建一個重復周期的定時器并且執行

    esp_err_t err = esp_timer_create(&test_periodic_arg, &test_p_handle);

    err = esp_timer_start_periodic(test_p_handle, 1000 * 1000);

    printf('重復周期運行的定時器創建狀態碼: %s', err == ESP_OK ? 'ok!rn' : 'failed!rn');

    while(1) 

    {

        vTaskDelay(1000 / portTICK_PERIOD_MS);

    }}

4.4 查看打印


關鍵字:ESP32  高分辨率  定時器 引用地址:ESP32學習筆記(3)——高分辨率定時器接口使用

上一篇:ESP32學習筆記(4)——UART串口使用
下一篇:ESP32學習筆記(2)——GPIO接口使用

推薦閱讀最新更新時間:2025-05-04 11:28

STM32高分辨率定時器(HRTIM)使用筆記
簡介:STM32高分辨率功能非常強大,寄存器數量非常多,使用起來也比較麻煩,本文使用HRTIM1產生一組互補輸出的PWM。 高分辨率定時器的初始化比普通定時器要復雜得多, HRTIM_OutputCfgTypeDef HRTIM_TIM_OutputStructure;//配置輸出特性,高低電平等 HRTIM_BaseInitTypeDef HRTIM_BaseInitStructure;//配置基本參數,這部分和普通定時器一樣 HRTIM_TimerInitTypeDef HRTIM_TimerInitStructure; //配置不同模式 HRTIM_TimerCfgTypeDef HRTIM_TimerW
[單片機]
用于大型線傳感器和區域傳感器的快速、高分辨率鏡頭
大倍率下的高質量圖像:用于大型線傳感器和區域傳感器的快速、高分辨率鏡頭 在新的“d.fine HR”產品系列中,Qioptiq可提供高分辨率LINOS? d.fine HR 2.4/128mm 3.33x鏡頭,它適用于要求嚴苛的線傳感器和區域傳感器。由于具有非常高的發光強度,因此它能提供較高的掃描速度,非常適合工業制造中的高端檢測任務。當分束器與鏡頭完美匹配時,可實現最佳的同軸線路照明,這使得線傳感器可獲得高對比度的清晰圖像。此外,其可選區域模塊(d.fine HR 區域掃描模塊)也使得這款高分辨率檢測鏡頭非常適合與二維區域傳感器一起使用。 圖1:Qioptiq的質量保證:工業制造中的高分辨率檢測也需要合適的精密光學元件
[傳感器]
用于大型線傳感器和區域傳感器的快速、<font color='red'>高分辨率</font>鏡頭
IMEC研發高分辨率SWIR圖像傳感器
據外媒報道,比利時歐洲微電子中心(Imec)的研究人員研發了一款高分辨率短波紅外線(SWIR)圖像傳感器原型,像素間距小至1.82 μm,刷新記錄。 該款傳感器基于一個薄膜光電探測器打造,而該光電探測器單片集成于定制化硅-互補金屬氧化物半導體(Si-CMOS)讀出電路上。研究人員采用了可與晶圓廠兼容的工藝流程,為大規模生產晶圓級傳感器鋪平了道路。此次研發的技術在像素間距和分辨率方面都大大超越了現有的銦鎵砷(InGaAs)SWIR圖像傳感器,而且具有很大的成本和尺寸優勢,甚至可以應用于工業機器視覺、智能基礎設施、汽車、監控、生命科學和消費電子產品等對成本要求比較高的新應用。 單片集成于Si-CMOS讀出電路的光電探測器
[汽車電子]
IMEC研發<font color='red'>高分辨率</font>SWIR圖像傳感器
又一細分汽車產業鏈!三大芯片巨頭“押寶”高分辨率成像雷達
自動駕駛的興起改變了傳統汽車毫米波雷達行業的面貌。 對前視和360度環繞感知的需求不斷增加,促使汽車制造商根據車內外的應用,尋求最佳的射頻性能、功耗、分辨率和尺寸。 而高角分辨率(也被稱為點云成像)汽車毫米波雷達市場正在成為全球三大汽車芯片巨頭(恩智浦、德州儀器和英飛凌)的下一個戰場。其中,恩智浦(NXPI.US)和英飛凌是傳統雷達芯片市場的TOP2,德州儀器(TXN.US)則是近兩年憑借單芯片集成方案殺入這個市場。 成像雷達是雷達的一個子集,它的名字來源于它的高角分辨率能夠提供清晰的圖像。角度分辨率是區分在相同距離和相同相對速度范圍內的物體的能力,同時能夠在高分辨率下識別靜態對象。 半年前,恩智浦宣布與一家中國供
[汽車電子]
日本顯示器研發出全球最高分辨率液晶面板
??? 據日本媒體報道,通過整合索尼、東芝、日立制作所的子公司經營的中小型顯示屏業務,以日本產業革新機構為中心成立的新公司“日本顯示器”日前對外宣布,公司已經成功研發出分辨率高達651ppi的液晶面板,可謂全球之最。   據了解,該款液晶面板為2.3英寸,單個像素尺寸為51微米,顯色能力為16.77M。它的分辨率是以往產品的兩倍,達到651ppi,為1280*800。 日本顯示器研發出全球最高分辨率液晶面板   根據市場研究機構調查,現階段3.5寸面板分辨率正持續朝200ppi、300ppi,甚至400ppi以上分辨率規格發展,可見智能型手機面板的尺寸,也隨著分辨率提高、而呈現放大趨勢。   雖然尚未確定該款高分
[家用電子]
高分辨率顏色傳感器TCS230的原理和應用
摘要 TCS230是美國TAOS公司生產的一種可編程彩色光到頻率的轉換器。論文主要介紹它的原理和應用。該傳感器具有分辨率高、可編程的顏色選擇與輸出定標、單電源供電等特點;輸出為數字量,可直接與微處理器連接。文中還介紹色光和白平衡的知識,并用一個實例來介紹TCS230識別顏色的過程。 關鍵詞 TCS230 顏色傳感器 顏色識別 白平衡調整   隨著現代工業生產向高速化、自動化方向的發展,生產過程中長期以來由人眼起主導作用的顏色識別工作將越來越多地被相應的顏色傳感器所替代。例如:圖書館使用顏色區分對文獻進行分類,能夠極大地提高排架管理和統計等工作;在包裝行業,產品包裝利用不同的顏色或裝磺來表示其不同的性質或用途。目前的顏色傳感
[工業控制]
<font color='red'>高分辨率</font>顏色傳感器TCS230的原理和應用
高分辨率監測腦細胞,新型神經芯片技術問世
  卡爾加里大學醫學院的科學家證實有可能開發一種新技術,培養出連接在硅芯片上的腦細胞網絡,或者說是連接在微芯片上的大腦,從而能以前所未有的高分辨率來監測腦細胞的活動。   加拿大國家研究委員會(NRC)開發的這種新型硅芯片在使用上更加簡單方便。通過這種新型芯片Neurochip可以幫助研究工作者進一步了解大腦細胞在正常環境下的工作機制,以及用于多種神經退行性疾病如阿爾茲海默癥和帕金森氏癥的藥物開發。   這項新技術是Naweed Syed博士領導的研究小組與加拿大國家研究委員會的同事們合作開發的,在線刊登在本月《生物醫學微設備》(Biomedical Microdevices)雜志上。   “這項技術的最大突破在于我們
[醫療電子]
西門子S7-1200PLC的四種定時器指令
在S7-1200PLC中,采用的定時器是標準的IEC定時器,屬于函數塊,所以每個定時器在使用時,都必須為其配置一個背景數據塊來保存相應的數據,并且在編輯器中放置定時器時,就會提示為其分配背景數據塊; Tips: 1.S7-1200PLC共有4種類型的定時器,分別是TP:脈沖定時器,TON:接通延時定時器,TOF:關斷延時定時器,TONR:保持性接通延時定時器; 2.每個定時器均使用16字節的IEC_Timer數據類型的DB結構來存儲功能框或線圈指令頂部指定的定時器數據; 3.S7-1200PLC的定時器數量多少不是由編號決定,它是由CPU的存儲容量大小決定; 4.為了避免系統產生過多的DB塊,可以使用數據類型為IEC_TIME
[嵌入式]
西門子S7-1200PLC的四種<font color='red'>定時器</font>指令
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 长丰县| 乐平市| 镇安县| 乐都县| 醴陵市| 盐边县| 长乐市| 霍邱县| 德清县| 洞口县| 百色市| 南岸区| 桂东县| 沅江市| 盐亭县| 安阳市| 遂昌县| 鄂托克前旗| 巴楚县| 平利县| 雷波县| 长岛县| 名山县| 昂仁县| 册亨县| 沈丘县| 汨罗市| 卓资县| 屯门区| 云浮市| 栖霞市| 东光县| 静宁县| 柳江县| 莆田市| 陇南市| 黄石市| 锡林郭勒盟| 姜堰市| 佛教| 大英县|