官网链接:https://www.rt-thread.org/document/site/programming-manual/timer/timer/#_13
代码如下
//创建定时器控制块
static rt_timer_t timer1;
static rt_timer_t timer2;
//定时器应用示例
/******************************************************************************************
*** 函数名称: timer1_CallBack
*** 输入参数: 无
*** 返 回 值: 无
*** 说 明:定时器1超时回调函数,闪烁LED灯,运行10此后停止定时器
*** 链 接:https://www.rt-thread.org/document/site/programming-manual/timer/timer/#_3
*** 编者 时间 版本
*** wagnlu 2020/11/16 V0.1
******************************************************************************************/
static void timer1_CallBack(void *parameter)
{
static uint8_t count=0;
rt_kprintf("timer1 periodic timerout %d\n", count);
if((count++) >10) //运行次数大于10,停止定时器
{
rt_timer_stop(timer1);
rt_kprintf("timer1 periodic stop\n");
}
}
/******************************************************************************************
*** 函数名称: timer2_CallBack
*** 输入参数: 无
*** 返 回 值: 无
*** 说 明:定时器2超时回调函数
*** 链 接:https://www.rt-thread.org/document/site/programming-manual/timer/timer/#_3
*** 编者 时间 版本
*** wagnlu 2020/11/16 V0.1
******************************************************************************************/
static void timer2_CallBack(void *parameter)
{
rt_kprintf("************ timer2 one shot timerout*********\n");
}
/******************************************************************************************
*** 函数名称: timer_sample
*** 输入参数: 无
*** 返 回 值: 无
*** 说 明:定时器创建示例
*** 链 接:https://www.rt-thread.org/document/site/programming-manual/timer/timer/#_3
*** 编者 时间 版本
*** wagnlu 2020/11/16 V0.1
******************************************************************************************/
int timer_sample(void *parameter)
{
//创建定时器1,周期定时器
timer1 = rt_timer_create( "timer1", //定时器的名称
timer1_CallBack, //定时器超时函数指针
RT_NULL, //定时器超时函数的入口参数
1000, //定时器的超时时间,单位是时钟节拍
RT_TIMER_FLAG_PERIODIC); //定时器创建时的参数,周期定时
if(timer1 != RT_NULL) //启动定时器1
{
rt_timer_start(timer1);
}
//创建定时器2,单次定时器
timer2 = rt_timer_create( "timer2", //定时器的名称
timer2_CallBack, //定时器超时函数指针
RT_NULL, //定时器超时函数的入口参数
3000, //定时器的超时时间,单位是时钟节拍
RT_TIMER_FLAG_ONE_SHOT ); //定时器创建时的参数,单次定时
if(timer2 != RT_NULL) //启动定时器2
{
rt_timer_start(timer2);
}
return 0;
}
MSH_CMD_EXPORT(timer_sample, timer sample); //导出msh命令
效果: