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