18363890557 发表于 2020-10-27 19:12:21

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





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
* @retvalNone
* @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
* @retvalNone
* @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
RTOSRTOS1.延时
/**
* @briefDelay function, maximum value: 65535 us.
*
* @paramuint16 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
* @retvalNone
* @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
* @retvalNone
* @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定时进入中断函数


测试

页: [1]
查看完整版本: 2.05-外设篇-定时器,延时