定时器,是指在指定的时刻开始,经过一指定的时间后出发一个事件。定时器有硬件定时器和软 件定时器之分:
• 硬件定时器是芯片本身提供的定时功能。一般是由外部晶振提供给芯片输入时钟,硬件定时器的精度一般很高,可以达到纳秒级别,并且是中断触发方式。 • 软件定时器是由操作系统提供的一类系统接口,它构建在硬件定时器基础之上,使系统能够 提供不受数目限制的定时器服务。软件定时器的精度取决于它使用的硬件定时器精度。
在RT-thread中,软件定时器模块以TICK为时间单位。TICK的时间长度为再次硬件中断的时间间隔。
RT-THREAD的软件定时器提供两种定时机制:第一类是单次触发定时器,第二类是周期触发定时器。
下面帖出创建的两个软件定时器:一个定时器单次触发,另一个周期触发:Rt_thread mailbox lab在这里下载工程包
#include <rtthread.h>
/* 定时器控制块 */ static rt_timer_t timer1; static rt_timer_t timer2;
static void timeout1(void * parameter){ rt_kprintf("periodic timer is timeout .\n"); }
static void timeout2(void* parameter){ rt_kprintf("oneshot timer is timeout .\n"); }
int timer_application_init(void){ timer1=rt_timer_create("timer1",timeout1,RT_NULL,10,RT_TIMER_FLAG_PERIODIC);
if(timer1!=RT_NULL) rt_timer_start(timer1);
timer2=rt_timer_create("timer2",timeout2,RT_NULL,30,RT_TIMER_FLAG_ONE_SHOT); if(timer2!=RT_NULL) rt_timer_start(timer2);
return 1; }
int rt_application_init() { timer_application_init(); return 0; }
|