创建定时器API_TimerCreate函数原型为:
#include <SylixOS.h> LW_OBJECT_HANDLE API_TimerCreate (CPCHAR pcName, ULONG ulOption, LW_OBJECT_ID *pulId);
    API_TimerCreate函数原型分析:
函数执行成功返回定时器句柄,执行失败返回0;
参数pcName为定时器名称;
参数ulOption为定时器类型,SylixOS支持告诉定时器和普通定时器;
参数pulId为定时器ID号。
2.2	启动定时器
启动定时器API_TimerStart函数原型为:
#include <SylixOS.h> ULONG API_TimerStart ( LW_OBJECT_HANDLE ulId, ULONG ulCounter, ULONG ulOption, PTIMER_CALLBACK_ROUTINE cbTimerRoutine, PVOID pvArg);
    API_TimerStart函数原型分析:
函数执行成功返回ERROR_NONE,执行失败返回错误码;
参数ulId为定时器句柄;
参数ulCounter为重复计数初始值;
参数ulOption为操作选项;
参数cbTimerRoutine为回调函数;
参数pvArg为参数。
2.3	停止定时器
停止定时器API_TimerCancel函数原型为:
#include <SylixOS.h> ULONG API_TimerCancel (LW_OBJECT_HANDLE ulId);
    API_TimerCancel函数原型分析:
函数执行成功返回ERROR_NONE,执行失败返回错误码;
参数ulId为定时器句柄。
2.4	删除定时器
删除定时器API_TimerDelete函数原型为:
#include <SylixOS.h> ULONG API_TimerDelete (LW_OBJECT_HANDLE *pulId);
    API_TimerDelete函数原型分析:
函数执行成功返回ERROR_NONE,执行失败返回错误码;
参数pulId为定时器句柄。
3. 使用实例
    SylixOS下定时器使用实例如程序清单 3.1所示。
程序清单 3.1 定时器实例
#include <stdio.h>
 
#define  TIMER_FREQUENCY  100                       /*  定时器检测周期              */
static void  timerCallBack (void  *pvArg)
{
    printf("this is a timer\n");
}
Int  main (int argc, char **argv)
{
    unsigned long  ulRet   = -1;
    timer_t         timerFd = 0;
    timerFd = API_TimerCreate("timer",
                              LW_OPTION_ITIMER | LW_OPTION_OBJECT_LOCAL,
                              LW_NULL);          /*  创建定时器                  */
    if (timerFd == ERROR_NONE) {
        printf("timer create failed\n");
        return  (PX_ERROR);
    }
    ulRet = API_TimerStart(timerFd,
                           TIMER_FREQUENCY,
                           LW_OPTION_AUTO_RESTART,
                           (PTIMER_CALLBACK_ROUTINE)timerCallBack,
                            LW_NULL);              /*  启动定时器                  */
    if (ulRet != ERROR_NONE) {
        printf("timer start failed\n");
        API_TimerDelete(&timerFd);
        return  (PX_ERROR);
    }
    while (1);
    return  (ERROR_NONE);
}    在虚拟器上运行程序,结果如程序清单 3.2所示。
程序清单 3.2 运行结果
[root@sylixos:/root]# /apps/testApp/testApp this is a timer this is a timer this is a timer this is a timer this is a timer ...
原文:http://blog.51cto.com/12558126/2141497