NONOS(2.2.0)
NONOS(2.2.0)
NONOS(2.2.0)
注:延時,軟件定時器,硬件定時器,只需要包含 #include "osapi.h"
1.延時
os_delay_us(us)
2.軟件定時器
#include "osapi.h" os_timer_t os_timer_one;//定義軟件定時器結構體變量 /** * @brief 定時器回調函數 * @param parg:傳入的配置os_timer_setfn函數最后的參數 * @param None * @param None * @param None * @retval None * @warning None * @example **/ void os_timer_one_function(void *parg) { os_printf("parg:%s\n", parg);//打印一下傳過來的參數 } //配置定時器 os_timer_setfn(&os_timer_one,os_timer_one_function,"yang");//os_timer_one:定時器結構體變量 os_timer_one_function:回調函數 yang:傳給回調函數的參數 //使能定時器 os_timer_arm(&os_timer_one,500,1);//os_timer_one:定時器變量 500:500ms進一次 1:循環
測試
停止定時器
void os_timer_disarm (os_timer_t ∗ptimer)
os_timer_disarm(&os_timer_one)
3.硬件定時器
/** * @brief 硬件定時器中斷回調函數 * @param None * @param None * @param None * @param None * @retval None * @warning None * @example **/ u32 cnt = 0; void hw_test_timer_cb(void) { cnt++; if(cnt>1000)//1S { cnt=0; os_printf("1111111111111\n");//打印 } } //定時器初始化 hw_timer_init(0,1);//1:循環 //設置定時器回調函數 hw_timer_set_func(hw_test_timer_cb);//hw_test_timer_cb:硬件定時器中斷回調函數 hw_timer_arm(1000);//1000:1000us定時進入中斷函數
測試
RTOS
RTOS
RTOS
1.延時
/** * @brief Delay function, maximum value: 65535 us. * * @param uint16 us : delay time, uint: us, maximum value: 65535 us * * @return null */ void os_delay_us(uint16 us);
軟件定時器
代碼
#include "esp_timer.h"
/** * @brief 定時器回調函數 * @param parg:傳入的配置os_timer_setfn函數最后的參數 * @param None * @param None * @param None * @retval None * @warning None * @example **/ void os_timer_one_function(void *parg) { printf("parg:%s\n", parg);//打印一下傳過來的參數 }
//配置定時器 os_timer_setfn(&os_timer_one,os_timer_one_function,"yang");//os_timer_one:定時器結構體變量 os_timer_one_function:回調函數 yang:傳給回調函數的參數 //使能定時器 os_timer_arm(&os_timer_one,500,1);//os_timer_one:定時器變量 500:500ms進一次 1:循環
測試
解除定時器
void os_timer_disarm (os_timer_t ∗ptimer)
os_timer_disarm(&os_timer_one)
硬件中斷定時器
代碼
#include "hw_timer.h"
/** * @brief 硬件定時器中斷回調函數 * @param None * @param None * @param None * @param None * @retval None * @warning None * @example **/ u32 cnt = 0; void hw_test_timer_cb(void) { cnt++; if(cnt>1000)//1S { cnt=0; printf("1111111111111\n");//打印 } }
//定時器初始化 hw_timer_init(1);//1:循環 //設置定時器回調函數 hw_timer_set_func(hw_test_timer_cb);//hw_test_timer_cb:硬件定時器中斷回調函數 hw_timer_arm(1000);//1000:1000us定時進入中斷函數
測試