其他分享
首页 > 其他分享> > μC/OS-II系统中软件定时器的使用

μC/OS-II系统中软件定时器的使用

作者:互联网

以下内容主要注重应用,对源码不做分析,对源码有兴趣的可参考官方具体文档,相关链接:https://doc.micrium.com/display/ucos/

开发环境:TrueSTUDIO

单片机:STM32F103VET6(HAL库)

一、创建并指定定时器的操作模式,OSTmrCreate()

  在使用定时器之前,需要先创建定时器。您可以通过调用OSTmrCreate()来创建定时器,并根据定时器的操作方式为该函数指定大量参数。指定定时器操作后,除非删除并重新创建定时器,否则无法更改其操作模式。定时器一旦创建,就可以根据需要经常启动(或重新启动)和停止。定时器可以创建在三种模式中的一种:单次,周期(没有初始延时)和周期(有初始延时)。函数原型为:

OS_TMR OSTmrCreate (INT32U           dly,              /* Initial delay        */
                    INT32U           period,           /* Repeat period        */
                    INT8U            opt,              /* Options              */
                    OS_TMR_CALLBACK  callback,         /* Fnct to call at 0    */
                    void             *callback_arg,    /* Arg. to callback     */
                    CPU_CHAR         *pname,           /* Name of timer, ASCII */
                    INT8             *perr)

二、启动(或重新启动)计时器,OSTmrStart()

  函数原型:

  1、BOOLEAN  OSTmrStart (OS_TMR   *ptmr, INT8U    *perr)

三、停止计时器的倒计时过程,OSTmrStop()

  函数原型:

  1、BOOLEAN  OSTmrStop (OS_TMR  *ptmr, INT8U    opt, void    *callback_arg, INT8U   *perr)

四、示例代码

  1、定义一个定时器指针:

/* 定义一个软件定时器 */
OS_TMR *SoftwareTmr;

  2、创建定时器(μC/OS系统的时钟节拍是1ms),第一次100ms后执行回调函数,之后以100ms为周期执行回调函数,如果创建成功就启动定时器:

    SoftwareTmr = OSTmrCreate(1, 1, OS_TMR_OPT_PERIODIC, TmrCallback, (void *)0, (INT8U *)"softwareTmr", &err);
    if(err == OS_ERR_NONE)
    {
        /* 启动软件定时器 */
        OSTmrStart(SoftwareTmr, &err);
    }

  3、定义定时器调用的回调函数,函数中执行LED灯闪烁:

static void TmrCallback(void *ptmr, void *callback_arg)
{
    HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_5);
}

 

#endif

标签:TMR,定时器,函数,void,II,callback,OS
来源: https://www.cnblogs.com/wenhao-Web/p/13870828.html