sylixos定时器使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sylixos定时器使用相关的知识,希望对你有一定的参考价值。
1. 适用范围
本文档介绍SylixOS下实现定时器功能的方法,使用者应熟悉SylixOS以及SylixOS下的编程规范。
2. 实现方案
SylixOS提供标准定时器接口,用户可在应用层直接调用,下面列出定时器的创建、启动、停止以及删除等操作,除此之外系统还提供如定时器复位、获取定时器状态等操作接口。
2.1 创建定时器
创建定时器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 "); } 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 "); 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 "); API_TimerDelete(&timerFd); return (PX_ERROR); } while (1); return (ERROR_NONE); }
在虚拟器上运行程序,结果如程序清单 3.2所示。
程序清单 3.2 运行结果
[[email protected]:/root]# /apps/testApp/testApp this is a timer this is a timer this is a timer this is a timer this is a timer ...
以上是关于sylixos定时器使用的主要内容,如果未能解决你的问题,请参考以下文章