RT-Thread 軟件定時器

一  軟件定時器相關函數

 

初始化定時器管理系統 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);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章