RT-Thread 软件定时器

    xiaoxiao2022-07-13  150

    一  软件定时器相关函数

     

    初始化定时器管理系统rt_system_timer_init rt_system_timer_thread_init创建定时器

    rt_timer_t rt_timer_create(const char* name, //定时器的名称                   void (*timeout)(void* parameter), //定时器超时函数指针

                      void* parameter,//定时器超时函数的入口参数                   rt_tick_t time, //定时器的超时时间,单位是系统节拍

                      rt_uint8_t flag);//定时器创建时的参数

    删除定时器rt_err_t rt_timer_delete(rt_timer_t timer);初始化静态定时器

    void rt_timer_init(rt_timer_t timer,//定时器句柄          const char* name, //定时器的名称

             void (*timeout)(void* parameter), //定时器超时函数指针

             void* parameter,//定时器超时函数的入口参数          rt_tick_t time, //定时器的超时时间,单位是系统节拍

             rt_uint8_t flag);//定时器创建时的参数

    脱离静态定时器rt_err_t rt_timer_detach(rt_timer_t timer);启动定时器rt_err_t rt_timer_start(rt_timer_t timer);停止定时器rt_err_t rt_timer_stop(rt_timer_t timer);控制定时器rt_err_t rt_timer_control(rt_timer_t timer, rt_uint8_t cmd, void* arg);

    二 使用定时器

    关于软件定时器有以下几点需要注意:

    软件定时器线程的优先级默认为 RT_TIMER_THREAD_PRIO,默认为 4软件定时器的精度由系统节拍(RT_TICK_PER_SECOND)决定.可以在rtconfig.h中配置是否使用软件定时器,以及定时器优先级,栈大小,节拍数 #include <rtthread.h> /* 定时器的控制块 */ static rt_timer_t timer1; /* 定时器1超时函数 */ static void timeout1(void* parameter) { } /* 创建定时器1 */ timer1 = rt_timer_create("timer1", /* 定时器名字是 timer1 */ timeout1, /* 超时时回调的处理函数 */ RT_NULL, /* 超时函数的入口参数 */ 10, /* 定时长度,以OS Tick为单位,即10个OS Tick */ RT_TIMER_FLAG_PERIODIC); /* 周期性定时器 */ /* 启动定时器 */ if (timer1 != RT_NULL) rt_timer_start(timer1);

     

    最新回复(0)