2.05-外设篇-定时器,延时

ESP8266:SDK开发(源码见资料源码)

开发板购买链接:开发板购买链接

资料源码:https://gitee.com/yang456/Learn8266ForSDK.git

开发软件:https://mnifdv.cn/resource/cnblogs/Learn8266ForSDK/AiThinkerIDE_V0.5_Setup.exe

点击加入群聊【ESP8266开发交流群】:ESP8266开发交流群

淘宝上许多贩卖TCP,UDP,APP,上位机,MQTT,云服务器等基础控制教程的,但是基础的没必要拿出来贩卖!

因为过于简单,只能个人玩玩而已,感觉像是在坑小学生。故,我给大家整理好,开源出来以供大家学习使用!

 

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

 

测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值