• ESP8266 SDK开发: 外设篇-定时器,延时


    RTOS(2.2.0)

    RTOS(2.2.0)

    RTOS(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
    ", 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
    ");//打印
        }
    }
    
    
    
        //定时器初始化
        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
    ", 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
    ");//打印
        }
    }
        //定时器初始化
        hw_timer_init(1);//1:循环
        //设置定时器回调函数
        hw_timer_set_func(hw_test_timer_cb);//hw_test_timer_cb:硬件定时器中断回调函数
        hw_timer_arm(1000);//1000:1000us定时进入中断函数

    测试

  • 相关阅读:
    团队项目的NABC(截图软件)
    《梦断代码》读后感_3
    《梦断代码》读后感_2
    毕设今日总结(二)
    毕业设计今日总结(一)
    QT中文乱码解决方法
    课堂练习——最大联通之数组
    《浪潮之巅》读书笔记3
    《浪潮之巅》读书笔记2
    《浪潮之巅》读书笔记1
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/12306048.html
Copyright © 2020-2023  润新知