ESP8266 SDK開發: 外設篇-定時器,延時


 

 

 

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定時進入中斷函數

 

測試

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM