sylixos定時器使用
阿新 • • 發佈:2018-07-13
錯誤 以及 adding creat justify cpc round list bsp 1. 適用範圍
本文檔介紹SylixOS下實現定時器功能的方法,使用者應熟悉SylixOS以及SylixOS下的編程規範。
2. 實現方案
SylixOS提供標準定時器接口,用戶可在應用層直接調用,下面列出定時器的創建、啟動、停止以及刪除等操作,除此之外系統還提供如定時器復位、獲取定時器狀態等操作接口。
2.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\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 ...
sylixos定時器使用