zoukankan      html  css  js  c++  java
  • 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定时进入中断函数

    测试

  • 相关阅读:
    Debug与Trace的区别?//作者:西西
    C#中substring ()的用法 //作者:张亚涛
    C# Lambda表达式 //作者:Kingmoon
    软件测试工具有哪些?软件测试工具下载?--最全最新的官网下载地址都在这里!错过绝对后悔!
    全网最全最细的appium自动化测试环境搭建教程以及appium工作原理
    手机app测试用例怎么写?手机app测试点有哪些?只有干货没有水分,错过绝对后悔!
    全网最全最细的jmeter接口测试教程以及接口测试流程详解
    全网最全最细的fiddler使用教程以及工作原理
    自学软件测试的网站有哪些?一个10年测试老鸟的珍藏!吐血推荐!
    软件测试工程师应该被尊重--让我们为测试正名!
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/12306048.html
Copyright © 2011-2022 走看看