OpenHarmony內(nèi)核編程接口—介紹定時(shí)器管理兩種定時(shí)器以及案例演示
想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問:
前言
本文介紹了內(nèi)核編程接口之軟定時(shí)器
軟定時(shí)器
軟定時(shí)器含義
軟件定時(shí)器(Timer),是基于系統(tǒng)時(shí)鐘tick且由軟件來(lái)模擬的定時(shí)器,當(dāng)經(jīng)過設(shè)定的tick計(jì)數(shù)值后會(huì)觸發(fā)用戶定義的回調(diào)函數(shù)。
ps1:定時(shí)器觸發(fā)函數(shù)的執(zhí)行,不是線程。
ps2:當(dāng)定時(shí)器到期時(shí),將執(zhí)行回調(diào)函數(shù)以運(yùn)行特定的代碼。
ps3:定時(shí)精度與時(shí)鐘周期有關(guān)。
ps4:所有定時(shí)器都可以啟動(dòng)、重新啟動(dòng)或停止。
ps5:每個(gè)定時(shí)器都可以配置為一次性或周期性定時(shí)器。
一次性定時(shí)器
一次性定時(shí)器指僅執(zhí)行一次操作即停止,不會(huì)自動(dòng)重新啟動(dòng)。
【OpenHarmony內(nèi)核編程接口】介紹定時(shí)器管理兩種定時(shí)器以及案例演示-開源基礎(chǔ)軟件社區(qū)
周期性定時(shí)器
周期性定時(shí)器指重復(fù)其操作,直到它被刪除或停止。
【OpenHarmony內(nèi)核編程接口】介紹定時(shí)器管理兩種定時(shí)器以及案例演示-開源基礎(chǔ)軟件社區(qū)
API接口介紹
osTimerNew
- 功能:創(chuàng)建并初始化一個(gè)定時(shí)器。
- 定義:osTimerId_t osTimerNew (osTimerFunc_t func, osTimerType_t type, void *argument, const osTimerAttr_t *attr)。
- 參數(shù):
func :定時(shí)器回調(diào)函數(shù)。
type :定時(shí)器類型。osTimerOnce 一次性定時(shí)器, osTimerPeriodic 周期性定時(shí)器。
argument :定時(shí)器回調(diào)函數(shù)的參數(shù)。
attr :定時(shí)器屬性。
- 返回值:成功返回定時(shí)器id,失敗返回 NULL。
osTimerGetName
- 功能:獲取指定ID的定時(shí)器的名稱
- 定義:const char *osTimerGetName(osTimerId_t timer_id)
- 參數(shù):timer_id :定時(shí)器 ID ,由 osTimerNew 生成
- 返回值:成功返回定時(shí)器的名稱,失敗返回 NULL
osTimerStart
- 功能:?jiǎn)?dòng)或者重啟指定ID的定時(shí)器
- 定義:osStatus_t osTimerStart(osTimerId_t timer_id, uint32_t ticks)
- 參數(shù):imer_id :定時(shí)器ID,由 osTimerNew 生成
ticks :定時(shí)器的間隔 - 返回值:osOK :操作成功
osErrorISR :不能從中斷服務(wù)程序中調(diào)用
osErrorParameter :參數(shù)錯(cuò)誤
osErrorResource :定時(shí)器狀態(tài)無(wú)效
osTimerStop
- 功能:停止指定ID的定時(shí)器
- 定義:osStatus_t osTimerStop (osTimerId_t timer_id)
- 參數(shù):timer_id :定時(shí)器ID ,由 osTimerNew 生成
- 返回值:osOK :操作成功
osErrorISR :不能從中斷服務(wù)程序中調(diào)用
osErrorParameter :參數(shù)錯(cuò)誤
osErrorResource :定時(shí)器不在運(yùn)行狀態(tài)(只能停止運(yùn)行態(tài)的定時(shí)器)
osTimerIsRunning
- 功能:檢查指定ID的定時(shí)器是否在運(yùn)行
- 定義:uint32_t osTimerIsRunning (osTimerId_t timer_id)
- 參數(shù):timer_id :定時(shí)器ID,由 osTimerNew 生成
- 返回值:1 :運(yùn)行 0 :沒有運(yùn)行或發(fā)生錯(cuò)誤
osTimerDelete
- 功能:刪除指定ID的定時(shí)器
- 定義:osStatus_t osTimerDelete (osTimerId_t timer_id)
- 參數(shù):timer_id :定時(shí)器ID,由 osTimerNew 生成
- 返回值:osOK :操作成功
osErrorISR :不能從中斷服務(wù)程序中調(diào)用
osErrorParameter :參數(shù)錯(cuò)誤
osErrorResource :定時(shí)器狀態(tài)無(wú)效
案例演示
目標(biāo)1:創(chuàng)建一個(gè)定時(shí)器,每 1 秒調(diào)用一次回調(diào)函數(shù),回調(diào)函數(shù)給全局變量 times+1,主線程等待 3 秒,停止并刪除定時(shí)器。
準(zhǔn)備開發(fā)套件。
【OpenHarmony內(nèi)核編程接口】介紹定時(shí)器管理兩種定時(shí)器以及案例演示-開源基礎(chǔ)軟件社區(qū)
根據(jù)路徑,新建文件。
applications\sample\wifi-iot\app\timer_demo\timer.c。
applications\sample\wifi-iot\app\timer_demo\BUILD.gn。
編寫源文件。
必要的頭文件。
【OpenHarmony內(nèi)核編程接口】介紹定時(shí)器管理兩種定時(shí)器以及案例演示-開源基礎(chǔ)軟件社區(qū)
定義全局變量和定時(shí)器回調(diào)函數(shù)。
【OpenHarmony內(nèi)核編程接口】介紹定時(shí)器管理兩種定時(shí)器以及案例演示-開源基礎(chǔ)軟件社區(qū)
創(chuàng)建主線程函數(shù)。
【OpenHarmony內(nèi)核編程接口】介紹定時(shí)器管理兩種定時(shí)器以及案例演示-開源基礎(chǔ)軟件社區(qū)
【OpenHarmony內(nèi)核編程接口】介紹定時(shí)器管理兩種定時(shí)器以及案例演示-開源基礎(chǔ)軟件社區(qū)
【OpenHarmony內(nèi)核編程接口】介紹定時(shí)器管理兩種定時(shí)器以及案例演示-開源基礎(chǔ)軟件社區(qū)
定義入口函數(shù),運(yùn)行入口函數(shù)。
【OpenHarmony內(nèi)核編程接口】介紹定時(shí)器管理兩種定時(shí)器以及案例演示-開源基礎(chǔ)軟件社區(qū)
編寫編譯腳本,注意路徑。
【OpenHarmony內(nèi)核編程接口】介紹定時(shí)器管理兩種定時(shí)器以及案例演示-開源基礎(chǔ)軟件社區(qū)
【OpenHarmony內(nèi)核編程接口】介紹定時(shí)器管理兩種定時(shí)器以及案例演示-開源基礎(chǔ)軟件社區(qū)
編譯成功。
【OpenHarmony內(nèi)核編程接口】介紹定時(shí)器管理兩種定時(shí)器以及案例演示-開源基礎(chǔ)軟件社區(qū)
燒錄成功。
【OpenHarmony內(nèi)核編程接口】介紹定時(shí)器管理兩種定時(shí)器以及案例演示-開源基礎(chǔ)軟件社區(qū)
運(yùn)行成功。
【OpenHarmony內(nèi)核編程接口】介紹定時(shí)器管理兩種定時(shí)器以及案例演示-開源基礎(chǔ)軟件社區(qū)
目標(biāo)2:創(chuàng)建一個(gè)定時(shí)器,每 2 秒調(diào)用一次回調(diào)函數(shù),主線程 1 秒后就停止定時(shí)器
根據(jù)路徑,新建文件。
applications\sample\wifi-iot\app\timer_demo\timer_once.c。
applications\sample\wifi-iot\app\timer_demo\BUILD.gn。
編寫源文件,定義定時(shí)器回調(diào)函數(shù)。
【OpenHarmony內(nèi)核編程接口】介紹定時(shí)器管理兩種定時(shí)器以及案例演示-開源基礎(chǔ)軟件社區(qū)
創(chuàng)建主線程函數(shù)。
【OpenHarmony內(nèi)核編程接口】介紹定時(shí)器管理兩種定時(shí)器以及案例演示-開源基礎(chǔ)軟件社區(qū)
【OpenHarmony內(nèi)核編程接口】介紹定時(shí)器管理兩種定時(shí)器以及案例演示-開源基礎(chǔ)軟件社區(qū)
【OpenHarmony內(nèi)核編程接口】介紹定時(shí)器管理兩種定時(shí)器以及案例演示-開源基礎(chǔ)軟件社區(qū)
定義運(yùn)行入口函數(shù)。
【OpenHarmony內(nèi)核編程接口】介紹定時(shí)器管理兩種定時(shí)器以及案例演示-開源基礎(chǔ)軟件社區(qū)
修改編譯腳本。
【OpenHarmony內(nèi)核編程接口】介紹定時(shí)器管理兩種定時(shí)器以及案例演示-開源基礎(chǔ)軟件社區(qū)
編譯成功。
【OpenHarmony內(nèi)核編程接口】介紹定時(shí)器管理兩種定時(shí)器以及案例演示-開源基礎(chǔ)軟件社區(qū)
燒錄成功。
【OpenHarmony內(nèi)核編程接口】介紹定時(shí)器管理兩種定時(shí)器以及案例演示-開源基礎(chǔ)軟件社區(qū)
運(yùn)行成功。
【OpenHarmony內(nèi)核編程接口】介紹定時(shí)器管理兩種定時(shí)器以及案例演示-開源基礎(chǔ)軟件社區(qū)