ESP32學習 外設 timer

2022-09-22 05:15:10 字數 1998 閱讀 5433

typedef struct

timer_config_t;

定時器初始化結構體成員6個,從上到下依次是,中斷使能,計數使能,中斷模式,計數方向,自動過載,分頻係數。

timer_init(timer_group_0,timer_1,&timerconfig);

初始化結構體後,呼叫初始化函式,三個引數包括,定時器組號,定時器編號,初始化結構體位址

timer_set_counter_value(timer_group_0,timer_1,0x00000000ull);

timer_set_alarm_value(timer_group_0,timer_1,timer_base_clk/8

); timer_enable_intr(timer_group_0,timer_1);

timer_isr_register(timer_group_0,timer_1,timer_isr_handler,(

void *)timer_1,esp_intr_flag_iram,null);

timer_start(timer_group_0,timer_1);

接下來需要呼叫設定定時器初值的函式,設定警報值的函式,使能定時器中斷,並註冊定時器中斷服務函式,註冊定時器中斷服務函式的引數有

定時器中斷服務函式的指標以及傳參和中斷函式儲存位址分類。

接下來就需要編寫定時器中斷服務函式

void iram_attr timer_isr_handler(void *arg)

if(timer_1==(u32_t)arg)

}

在中斷服務函式中需要判斷下產生中斷的定時器是否是我們設定的定時器,這是為了在使用多個定時器時可以把同一組的定時器中斷服務

都註冊在乙個函式,區分產生中斷的外設可以根據檢測定時器分組中的中斷狀態標誌位,看對應的t0位是否為1,也可以根據我們註冊中斷服務函式時

傳入的引數來判斷中斷的定時器。

需要注意的是,定時器中斷標誌位需要軟體手動清除,如果想繼續使用鬧鈴功能,需要重新使能鬧鈴功能。

上面是esp32的硬體定時器,在軟體中還有一種esp_timer即軟體定時器

/*

* * @brief timer configuration passed to esp_timer_create */

typedef

struct

esp_timer_create_args_t;

這是esp_timer建立時所需引數的結構體,結構體成員有5個成員

第乙個是當定時器到達設定值時**函式的位址。

第二個是**函式的傳遞引數

第三個是呼叫**函式的方式,是從task中**還是從isr中**,esp32目前只支援task中**。所以不用設定

第四個是定時器的名字

第五個是當週期定時發生時是否跳過未處理的事件

esp_err_t err=esp_timer_create(&esp_timer_args_t1,&esp_timer_handle_timer1);

err=esp_timer_start_periodic(esp_timer_handle_timer1,1000000

);

if(err==err_ok)

printf(

"esp-timer initialation is ok!\n

");

初始化引數賦值完後就可以呼叫建立函式了,建立函式中的引數包括建立引數的結構體和esp_timer控制代碼,後期會用到控制代碼。

啟動定時器如果單次定時使用start_once,如果是週期性使用呼叫start_periodic

因為軟體定時器的週期是固定的1us所以設定的溢位值是以us位單位。剩下的就是在**函式中編寫我們需要的功能了。

軟體定時器不需要清楚標誌位,在定時器計數達到設定值後會呼叫**函式並將計數值清0。

ESP32學習 外設 UART

brief uart configuration parameters for uart param config function typedef struct uart config t esp32總共有三個串列埠分別是uart num0,uart num1,uart num2。串列埠0作為軟體...

ESP32 學習記錄

首次接觸freertos和espressif的產品,例如我,那還是要先來個整體印象,然後再逐個深化。做專案的都知道,老闆們是不允許我們四平八穩的研究完然後再開始專案。那也不妨礙咱們要有自己的節奏,既要平衡專案的進度,也要按照事情的規律來做事情 這就需要快速的準備一些預備知識,磨刀不誤砍柴功,倉促上陣...

ESP32模組比較

esp32系列無線ic是樂鑫espressif出品的價效比高的藍芽wifi雙模ic。官網 最詳細的手冊文件為 esp32 technical reference manual cn.pdf 將官方和一些其他方的模組列表比較,包括資源,也把晶元放進去。esp32單核晶元用的少沒有列出。可以看出,安信可...