rtt提供基于硬件定时器的软件定时器,它使用起来比硬件定时器更便捷,缺点是精度较于硬件定时器要差一些。
使用方法
static rt_timer_t swtmr = RT_NULL; //定义软件定时器控制块
static void swtmr_callback(void* parameter) //定义软件定时器回调函数,计时器到时间后会自动调用
{
dosomething();
}
int main(void)
{ //初始化软件定时器控制块
swtmr = rt_timer_create("swtmr_callback", //软件定时器名称
swtmr_callback, //软件定时器回调函数句柄
0, //回调函数的入口参数
1000, //软件定时器超时时间
RT_TIMER_FLAG_ONE_SHOT | RT_TIME_FLAG_SOFT_TIMER); //触发模式,本例为一次触发后结束,也可周期触发。
if (swtmr !=RT_NULL)
rt_timer_start(swtmr);
}
注意事项
- 软件定时器的使用不再是线程的形式。
- 软件定时器依托于系统时钟节拍值,可以通过rt_tick_get()获取当前系统节拍时钟值。
近期评论