1 VxWorks定时的方法
1.1 使用taskDely函数
函数原型为:STATUS taskDelay(int ticks)该函数提供一种简单的任务休眠机制,常用于需要不精确定时或延时的应用中,其定时的单位为tick,默认情况下60(ticks)为1s (利用sysClkRateSet函数可以修改系统默认的时钟速率)。在任务中调用taskDelay函数可以在指定的ticks期间空出CPU的使用权,同时改变该任务的状态为DELAY.由于经常受到任务调度的影响,该定时机制并不精确。
1.2 看门狗watchDog
VxWorks提供了一个看门狗定时器(watchDog timer),它由以下四个函数维护:
wdCreate( ) 创建并初始化一个看门狗定时器;wdDelete( ) 终止并删除一个看门狗定时器;wdStart( )启动看门狗定时器;wdCancel( ) 暂停当前看门狗定时器运行。
利用wdCreate函数,在任何任务中都可以创建一个看门狗定时器,经过设置的时间段后,实现指定的C函数。
watchDog定时器作为系统时钟中断服务程序的一部分来维护。因此看门狗所定时执行的程序工作在系统中断级别具有很高的优先级,该程序必须遵守一般ISR程序的规定,不能使用任何可能被阻塞的程序。文章所介绍的高效定时器就是在看门狗定时器的基础上设计的。
1.3 POSIX标准的timer
VxWorks同时也提供IEEE的POSIX 1003.1b标准定时器接口。POSIX标准保证了应用程序与操作系统之间接口的简易性,利用这些接口编程,可以使得应用程序很轻松地从一个操作系统移植到另外的操作系统。使用该定时机制,在指定时间段后,任务将向自身发送SIGNAL,该定时器是建立在时钟和信号之上。POSIX标准的timer定时器常常用来编写跨平台、需要在多个操作系统下运行、易移植的程序。
1 VxWorks定时的方法
1.1 使用taskDely函数
函数原型为:STATUS taskDelay(int ticks)该函数提供一种简单的任务休眠机制,常用于需要不精确定时或延时的应用中,其定时的单位为tick,默认情况下60(ticks)为1s (利用sysClkRateSet函数可以修改系统默认的时钟速率)。在任务中调用taskDelay函数可以在指定的ticks期间空出CPU的使用权,同时改变该任务的状态为DELAY.由于经常受到任务调度的影响,该定时机制并不精确。
1.2 看门狗watchDog
VxWorks提供了一个看门狗定时器(watchDog timer),它由以下四个函数维护:
wdCreate( ) 创建并初始化一个看门狗定时器;wdDelete( ) 终止并删除一个看门狗定时器;wdStart( )启动看门狗定时器;wdCancel( ) 暂停当前看门狗定时器运行。
利用wdCreate函数,在任何任务中都可以创建一个看门狗定时器,经过设置的时间段后,实现指定的C函数。
watchDog定时器作为系统时钟中断服务程序的一部分来维护。因此看门狗所定时执行的程序工作在系统中断级别具有很高的优先级,该程序必须遵守一般ISR程序的规定,不能使用任何可能被阻塞的程序。文章所介绍的高效定时器就是在看门狗定时器的基础上设计的。
1.3 POSIX标准的timer
VxWorks同时也提供IEEE的POSIX 1003.1b标准定时器接口。POSIX标准保证了应用程序与操作系统之间接口的简易性,利用这些接口编程,可以使得应用程序很轻松地从一个操作系统移植到另外的操作系统。使用该定时机制,在指定时间段后,任务将向自身发送SIGNAL,该定时器是建立在时钟和信号之上。POSIX标准的timer定时器常常用来编写跨平台、需要在多个操作系统下运行、易移植的程序。
举报