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定时进入中断函数

    测试

  • 相关阅读:
    去掉python的警告
    LeetCode--687. 最长同值路径
    Python中获取字典中最值对应的键
    python -- 解决If using all scalar values, you must pass an index问题
    keras自定义padding大小
    评价指标的局限性、ROC曲线、余弦距离、A/B测试、模型评估的方法、超参数调优、过拟合与欠拟合
    一言难尽的js变量提升
    vue-cli 脚手架 安装
    十分钟入门 Less
    Echarts的资源文件
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/12306048.html
Copyright © 2011-2022 走看看