定时器分为软件定时器和硬件定时器。
硬件定时器,是指单片机本身提供的一种外设,能够产生定时事件,而且不占用CPU时间。优点是定时精度高,独立于CPU,还可灵活配置其他许多功能,例如PWM。
而软件定时器是操作系统提供的一种定时接口,其精度取决于操作系统的tick时间,而RTOS的tick建立在硬件定时器之上,一旦开机就不再改变。但优点是其数量不受硬件定时器数目的限制,而且便于操作系统统一管理。RTT中,软件定时器还分单次触发和周期性触发。
这个例子显示了一个周期性触发的软件定时器。
程序
#include <rtthread.h>
static rt_timer_t timer1;
static rt_uint8_t count;
static void timeout1(void *parameter)
{
rt_kprintf("periodic timer is timeout, %d.\n", count);
count++;
if (count >= 8)
{
rt_kprintf("stop it!\n");
rt_timer_stop(timer1);
count = 0;
}
}
int rt_application_init()
{
timer1 = rt_timer_create("timer1",
timeout1,
RT_NULL,
10,
RT_TIMER_FLAG_PERIODIC);
if (timer1 != RT_NULL)
rt_timer_start(timer1);
return 0;
}
结果
periodic timer is timeout
periodic ti