UCOSIII软件定时器

API函数

//创建
void OSTmrCreate (OS_TMR *p_tmr,
                  CPU_CHAR *p_name,
                  OS_TICK dly,
                  OS_TICK period,
                  OS_OPT opt,
                  OS_TMR_CALLBACK_PTR p_callback,
                  void *p_callback_arg,
                  OS_ERR *p_err);

//删除
CPU_BOOLEAN OSTmrDel (OS_TMR *p_tmr,
                      OS_ERR *p_err);

//获取剩余时间
OS_TICK OSTmrRemainGet (OS_TMR *p_tmr,
                        OS_ERR *p_err);

//启动
CPU_BOOLEAN OSTmrStart (OS_TMR *p_tmr,
                        OS_ERR *p_err);

//获取当前定时器状态
OS_STATE OSTmrStateGet (OS_TMR *p_tmr,
                        OS_ERR *p_err);

//停止
CPU_BOOLEAN OSTmrStop (OS_TMR *p_tmr,
                       OS_OPT opt,
                       void *p_callback_arg,
                       OS_ERR *p_err);

举例

OSTmrCreate((OS_TMR     *)&tmr, //定时器
           (CPU_CHAR    *)"tmr",    //定时器名字
           (OS_TICK  )20,           //20*10=200ms
           (OS_TICK  )100,          //100*10=1000ms
           (OS_OPT       )OS_OPT_TMR_PERIODIC, //周期模式
           (OS_TMR_CALLBACK_PTR)tmr_callback,//定时器回调函数
           (void        *)0,            //参数为0
           (OS_ERR      *)&err);        //返回的错误码

//定时器的回调函数
void tmr_callback(void *p_tmr, void *p_arg)
{
    static u8 tmr_num=0;
    tmr_num++;      //定时器执行次数加1
    printf("定时器运行结束\r\n");
}

int main()
{
    OSTmrStart(&tmr, &err); //开启定时器

    OSTmrStop(&tmr, OS_OPT_TMR_NONE, 0, &err);  //关闭定时器

    return 0;
}

实验现象
1

posted @   thomas_blog  阅读(248)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示