论武天地论坛

 找回密码
 立即注册
搜索
查看: 4160|回复: 0

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

[复制链接]

58

主题

58

帖子

244

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
244
发表于 2020-10-27 19:12:21 | 显示全部楼层 |阅读模式




RTOS(2.2.0)    RTOS(2.2.0)     RTOS(2.2.0)
注:延时,软件定时器,硬件定时器,只需要包含  #include "osapi.h"
819239-20200521015754409-212307100.png




1.延时

os_delay_us(us)

2.软件定时器
819239-20200521020420716-503666872.png


#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:循环

测试
819239-20200521020600757-346272953.png

停止定时器
void os_timer_disarm (os_timer_t ∗ptimer)

os_timer_disarm(&os_timer_one)





3.硬件定时器
819239-20200521021523970-817227180.png



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



测试
819239-20200521021611576-2072052049.png






RTOS
RTOSRTOS
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);




软件定时器
819239-20200214001232012-172291620.png



819239-20200214001348147-424729565.png



代码
819239-20200214002959631-552547281.png


#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:循环


测试
819239-20200214003201373-329623862.png



解除定时器void os_timer_disarm (os_timer_t ∗ptimer)

os_timer_disarm(&os_timer_one)






硬件中断定时器
819239-20200214003637184-229103553.png




代码
819239-20200214004645717-353570941.png


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


测试
819239-20200214004749383-2010329736.png


copycode.gif
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|论武天地论坛

GMT+8, 2024-10-16 00:27 , Processed in 0.078878 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表