国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Harmony鴻蒙南向驅(qū)動(dòng)開發(fā)-RTC接口使用

這篇具有很好參考價(jià)值的文章主要介紹了Harmony鴻蒙南向驅(qū)動(dòng)開發(fā)-RTC接口使用。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

功能簡介

RTC(real-time clock)為操作系統(tǒng)中的實(shí)時(shí)時(shí)鐘設(shè)備,為操作系統(tǒng)提供精準(zhǔn)的實(shí)時(shí)時(shí)間和定時(shí)報(bào)警功能。當(dāng)設(shè)備下電后,通過外置電池供電,RTC繼續(xù)記錄操作系統(tǒng)時(shí)間;設(shè)備上電后,RTC提供實(shí)時(shí)時(shí)鐘給操作系統(tǒng),確保斷電后系統(tǒng)時(shí)間的連續(xù)性。

運(yùn)作機(jī)制

在HDF框架中,RTC模塊采用獨(dú)立服務(wù)模式,在這種模式下,每一個(gè)設(shè)備對象會獨(dú)立發(fā)布一個(gè)設(shè)備服務(wù)來處理外部訪問,設(shè)備管理器收到API的訪問請求之后,通過提取該請求的參數(shù),達(dá)到調(diào)用實(shí)際設(shè)備對象的相應(yīng)內(nèi)部方法的目的。獨(dú)立服務(wù)模式可以直接借助HDFDeviceManager的服務(wù)管理能力,但需要為每個(gè)設(shè)備單獨(dú)配置設(shè)備節(jié)點(diǎn),若設(shè)備過多會增加內(nèi)存占用。通常,一個(gè)硬件系統(tǒng)中只需要一個(gè)RTC設(shè)備,因此RTC模塊采用獨(dú)立服務(wù)模式較為合適。

獨(dú)立服務(wù)模式下,核心層不會統(tǒng)一發(fā)布一個(gè)服務(wù)供上層使用,因此這種模式下驅(qū)動(dòng)要為每個(gè)控制器發(fā)布一個(gè)服務(wù),具體表現(xiàn)為:

  • 驅(qū)動(dòng)適配者需要實(shí)現(xiàn)HdfDriverEntry的Bind鉤子函數(shù)以綁定服務(wù)。

  • device_info.hcs文件中deviceNode的policy字段為1或2,不能為0。

圖 1?RTC獨(dú)立服務(wù)模式結(jié)構(gòu)圖

Harmony鴻蒙南向驅(qū)動(dòng)開發(fā)-RTC接口使用,鴻蒙南向開發(fā),鴻蒙,harmonyos,華為,嵌入式硬件,鴻蒙,鴻蒙系統(tǒng),驅(qū)動(dòng)開發(fā),實(shí)時(shí)音視頻

RTC模塊各分層作用:

  • 接口層提供打開RTC設(shè)備、RTC設(shè)備讀取時(shí)間、RTC設(shè)備設(shè)置時(shí)間、RTC設(shè)備讀取警報(bào)時(shí)間、RTC設(shè)備設(shè)置警報(bào)時(shí)間、RTC設(shè)備定時(shí)報(bào)警回調(diào)函數(shù)、RTC設(shè)備設(shè)置定時(shí)報(bào)警中斷使能去使能、RTC設(shè)備設(shè)置RTC外頻、RTC設(shè)備讀取RTC外頻、復(fù)位RTC、設(shè)置RTC自定義寄存器配置,讀取RTC自定義寄存器配置以及關(guān)閉RTC設(shè)備的接口。

  • 核心層主要提供RTC控制器的創(chuàng)建、銷毀,通過鉤子函數(shù)與適配層交互。

  • 適配層主要是將鉤子函數(shù)的功能實(shí)例化,實(shí)現(xiàn)具體的功能。

使用指導(dǎo)

場景介紹

RTC主要用于提供實(shí)時(shí)時(shí)間和定時(shí)報(bào)警功能。

接口說明

RTC模塊提供的主要接口如表1所示,具體API詳見//drivers/hdf_core/framework/include/platform/rtc_if.h。

表 1?RTC設(shè)備API接口功能介紹

接口名 接口描述
DevHandle RtcOpen(void) 獲取RTC設(shè)備驅(qū)動(dòng)句柄
void RtcClose(DevHandle handle) 釋放RTC設(shè)備驅(qū)動(dòng)句柄
int32_t RtcReadTime(DevHandle handle, struct RtcTime *time) 讀RTC時(shí)間信息
int32_t RtcWriteTime(DevHandle handle, const struct RtcTime *time) 寫RTC時(shí)間信息,包括年、月、星期、日、時(shí)、分、秒、毫秒
int32_t RtcReadAlarm(DevHandle handle, enum RtcAlarmIndex alarmIndex, struct RtcTime *time) 讀RTC報(bào)警時(shí)間信息
int32_t RtcWriteAlarm(DevHandle handle, enum RtcAlarmIndex alarmIndex, const struct RtcTime *time) 寫RTC報(bào)警時(shí)間信息
int32_t RtcRegisterAlarmCallback(DevHandle handle, enum RtcAlarmIndex alarmIndex, RtcAlarmCallback cb) 注冊報(bào)警超時(shí)回調(diào)函數(shù)
int32_t RtcAlarmInterruptEnable(DevHandle handle, enum RtcAlarmIndex alarmIndex, uint8_t enable) 使能/去使能RTC報(bào)警中斷
int32_t RtcGetFreq(DevHandle handle, uint32_t *freq) 讀RTC外接晶振頻率
int32_t RtcSetFreq(DevHandle handle, uint32_t freq) 配置RTC外接晶振頻率
int32_t RtcReset(DevHandle handle) RTC復(fù)位
int32_t RtcReadReg(DevHandle handle, uint8_t usrDefIndex, uint8_t *value) 讀用戶自定義寄存器
int32_t RtcWriteReg(DevHandle handle, uint8_t usrDefIndex, uint8_t value) 寫用戶自定義寄存器

使用流程

使用RTC設(shè)備的一般流程如圖2所示。

圖 2?RTC設(shè)備使用流程圖

Harmony鴻蒙南向驅(qū)動(dòng)開發(fā)-RTC接口使用,鴻蒙南向開發(fā),鴻蒙,harmonyos,華為,嵌入式硬件,鴻蒙,鴻蒙系統(tǒng),驅(qū)動(dòng)開發(fā),實(shí)時(shí)音視頻

創(chuàng)建RTC設(shè)備句柄

RTC驅(qū)動(dòng)加載成功后,使用驅(qū)動(dòng)框架提供的查詢接口并調(diào)用RTC設(shè)備驅(qū)動(dòng)接口。

說明:
當(dāng)前操作系統(tǒng)僅支持一個(gè)RTC設(shè)備。本文涉及的RTC的所有接口,支持內(nèi)核態(tài)及用戶態(tài)使用。

DevHandle RtcOpen(void);

表 2?RtcOpen參數(shù)和返回值描述

參數(shù) 描述
void NA
返回值 描述
handle 獲取對應(yīng)的RTC設(shè)備句柄成功
NULL 獲取對應(yīng)的RTC設(shè)備句柄成功失敗
DevHandle handle = NULL;

// 獲取RTC句柄
handle = RtcOpen();
if (handle == NULL) {
    // 錯(cuò)誤處理
    HDF_LOGE("open rtc fail!");
    return HDF_FAILURE;
}
注冊RTC定時(shí)報(bào)警回調(diào)函數(shù)

系統(tǒng)啟動(dòng)后需要注冊RTC定時(shí)報(bào)警回調(diào)函數(shù),報(bào)警超時(shí)后觸發(fā)回調(diào)函數(shù)。

int32_t RtcRegisterAlarmCallback(DevHandle handle, enum RtcAlarmIndex alarmIndex, RtcAlarmCallback cb);

表 3?RtcRegisterAlarmCallback參數(shù)和返回值描述

參數(shù) 描述
handle DevHandle類型,RTC設(shè)備句柄
alarmIndex 枚舉類型,報(bào)警索引
cb 定時(shí)報(bào)警回調(diào)函數(shù)
返回值 描述
HDF_SUCCESS 操作成功
負(fù)數(shù) 操作失敗

注冊RTC_ALARM_INDEX_A的定時(shí)報(bào)警處理函數(shù), 示例如下:

// 用戶注冊RTC定時(shí)報(bào)警回調(diào)函數(shù)的方法
int32_t RtcAlarmACallback(enum RtcAlarmIndex alarmIndex)
{
    if (alarmIndex == RTC_ALARM_INDEX_A) {
        // 報(bào)警A的處理
        HDF_LOGD("RTC Alarm A callback function\n\r");
        return HDF_SUCCESS;
    } else if (alarmIndex == RTC_ALARM_INDEX_B) {
        // 報(bào)警B的處理
        HDF_LOGD("RTC Alarm B callback function\n\r");
        return HDF_SUCCESS;
    } else {
        // 錯(cuò)誤處理
        HDF_LOGE("RTC Alarm callback function fail!\n");
        return HDF_FAILURE;
    }
    return HDF_SUCCESS;
}
int32_t ret;
// 注冊報(bào)警A的定時(shí)回調(diào)函數(shù)
ret = RtcRegisterAlarmCallback(handle, RTC_ALARM_INDEX_A, RtcAlarmACallback);
if (ret != HDF_SUCCESS) {
    // 錯(cuò)誤處理
    HDF_LOGE("register alarm callback fail, ret:%d", ret);
    return ret;
}
操作RTC
  • 讀取RTC時(shí)間。

    系統(tǒng)從RTC讀取時(shí)間信息,包括年、月、星期、日、時(shí)、分、秒、毫秒,則可以通過以下函數(shù)完成:

    int32_t RtcReadTime(DevHandle handle, struct RtcTime *time);

    表 4?RtcReadTime參數(shù)和返回值描述

    參數(shù) 描述
    handle DevHandle類型,RTC設(shè)備句柄
    time 結(jié)構(gòu)體指針類型,RTC讀取時(shí)間信息,包括年、月、星期、日、時(shí)、分、秒、毫秒
    返回值 描述
    HDF_SUCCESS 讀取RTC時(shí)間成功
    負(fù)數(shù) 讀取RTC時(shí)間失敗
    int32_t ret;
    struct RtcTime tm;
    
    // 系統(tǒng)從RTC讀取時(shí)間信息
    ret = RtcReadTime(handle, &tm);
    if (ret != HDF_SUCCESS) {
        // 錯(cuò)誤處理
        HDF_LOGE("%s:read time fail, ret:%d", __func__, ret);
        return ret;
    }
  • 設(shè)置RTC時(shí)間

    設(shè)置RTC時(shí)間,則可以通過以下函數(shù)完成:

    int32_t RtcWriteTime(DevHandle handle, struct RtcTime *time);

    表 5?RtcWriteTime參數(shù)和返回值描述

    參數(shù) 描述
    handle DevHandle類型,RTC設(shè)備句柄
    time 結(jié)構(gòu)體指針類型,寫RTC時(shí)間信息,包括年、月、星期、日、時(shí)、分、秒、毫秒
    返回值 描述
    HDF_SUCCESS 設(shè)置RTC時(shí)間成功
    負(fù)數(shù) 設(shè)置RTC時(shí)間失敗

    說明:
    RTC起始時(shí)間為UTC 1970/01/01 Thursday 00:00:00,年的最大取值按照用戶器件手冊要求計(jì)算配置,星期不用配置。

    int32_t ret;
    struct RtcTime tm;
    
    // 設(shè)置RTC時(shí)間為 UTC 2020/01/01 00:59:00 .000
    tm.year = 2020;
    tm.month = 01;
    tm.day = 01;
    tm.hour= 00;
    tm.minute = 59;
    tm.second = 00;
    tm.millisecond = 0;
    // 寫RTC時(shí)間信息
    ret = RtcWriteTime(handle, &tm);
    if (ret != HDF_SUCCESS) {
        // 錯(cuò)誤處理
        HDF_LOGE("write time fail, ret:%d", ret);
        return ret;
    }
  • 讀取RTC報(bào)警時(shí)間

    如果需要讀取定時(shí)報(bào)警時(shí)間,則可以通過以下函數(shù)完成:

    int32_t RtcReadAlarm(DevHandle handle, enum RtcAlarmIndex alarmIndex, struct RtcTime *time);

    表 6?RtcReadAlarm參數(shù)和返回值描述

    參數(shù) 描述
    handle DevHandle類型,RTC設(shè)備句柄
    alarmIndex 枚舉類型,報(bào)警索引
    time 結(jié)構(gòu)體指針類型,RTC報(bào)警時(shí)間信息,包括年、月、星期、日、時(shí)、分、秒、毫秒
    返回值 描述
    HDF_SUCCESS 讀取RTC報(bào)警時(shí)間成功
    負(fù)數(shù) 讀取RTC報(bào)警時(shí)間失敗
    int32_t ret;
    struct RtcTime alarmTime;
    
    // 讀RTC_ALARM_INDEX_A索引的RTC定時(shí)報(bào)警時(shí)間信息 
    ret = RtcReadAlarm(handle, RTC_ALARM_INDEX_A, &alarmTime);
    if (ret != HDF_SUCCESS) {
        // 錯(cuò)誤處理
        HDF_LOGE("read alarm fail, ret:%d", ret);
        return ret;
    }
  • 設(shè)置RTC報(bào)警時(shí)間

    根據(jù)報(bào)警索引設(shè)置RTC報(bào)警時(shí)間,通過以下函數(shù)完成:

    int32_t RtcWriteAlarm(DevHandle handle, enum RtcAlarmIndex alarmIndex, struct RtcTime *time);

    表 7?RtcWriteAlarm參數(shù)和返回值描述

    參數(shù) 描述
    handle DevHandle類型,RTC設(shè)備句柄
    alarmIndex 枚舉類型,報(bào)警索引
    time 結(jié)構(gòu)體指針類型,RTC報(bào)警時(shí)間信息,包括年、月、星期、日、時(shí)、分、秒、毫秒
    返回值 描述
    HDF_SUCCESS 設(shè)置RTC報(bào)警時(shí)間成功
    負(fù)數(shù) 設(shè)置RTC報(bào)警時(shí)間失敗

    說明:?RTC起始時(shí)間為UTC 1970/01/01 Thursday 00:00:00,年的最大取值按照用戶器件手冊要求計(jì)算配置,星期不用配置。

    int32_t ret;
    struct RtcTime alarmTime;
    
    // 設(shè)置RTC報(bào)警時(shí)間為2020/01/01 00:59:59 .000 
    alarmTime.year = 2020;
    alarmTime.month = 01;
    alarmTime.day = 01;
    alarmTime.hour = 00;
    alarmTime.minute = 59;
    alarmTime.second = 59;
    alarmTime.millisecond = 0;
    // 設(shè)置RTC_ALARM_INDEX_A索引的定時(shí)報(bào)警時(shí)間 
    ret = RtcWriteAlarm(handle, RTC_ALARM_INDEX_A, &alarmTime);
    if (ret != HDF_SUCCESS) {
        // 錯(cuò)誤處理 
        HDF_LOGE("write alarm fail, ret:%d", ret);
        return ret;
    }
  • 設(shè)置定時(shí)報(bào)警中斷使能或去使能

    在啟動(dòng)報(bào)警操作前,需要先設(shè)置報(bào)警中斷使能,報(bào)警超時(shí)后會觸發(fā)告警回調(diào)函數(shù),可以通過以下函數(shù)完成:

    int32_t RtcAlarmInterruptEnable(DevHandle handle, enum RtcAlarmIndex alarmIndex, uint8_t enable);

    表 8?RtcAlarmInterruptEnable參數(shù)和返回值描述

    參數(shù) 描述
    handle DevHandle類型,RTC設(shè)備句柄
    alarmIndex 枚舉類型,報(bào)警索引
    enable uint8_t類型,RTC報(bào)警中斷配置,1:使能,0:去使能
    返回值 描述
    HDF_SUCCESS 設(shè)置定時(shí)報(bào)警中斷使能或去使能成功
    負(fù)數(shù) 設(shè)置定時(shí)報(bào)警中斷使能或去使能失敗
    int32_t ret;
    
    // 設(shè)置RTC報(bào)警中斷使能 
    ret = RtcAlarmInterruptEnable(handle, RTC_ALARM_INDEX_A, 1);
    if (ret != HDF_SUCCESS) {
        // 錯(cuò)誤處理
        HDF_LOGE("alarm interrupt enable fail, ret:%d", ret);
        return ret;
    }
  • 讀取RTC外頻

    讀取RTC外接晶體振蕩頻率,可以通過以下函數(shù)完成:

    int32_t RtcGetFreq(DevHandle handle, uint32_t *freq);

    表 9?RtcGetFreq參數(shù)和返回值描述

    參數(shù) 描述
    handle DevHandle類型,RTC設(shè)備句柄
    freq uint32_t類型指針,RTC的外接晶體振蕩頻率,單位(HZ)
    返回值 描述
    HDF_SUCCESS 讀取RTC外頻成功
    負(fù)數(shù) 讀取RTC外頻失敗
    int32_t ret;
    uint32_t freq = 0;
    
    // 讀取RTC外接晶體振蕩頻率 
    ret = RtcGetFreq(handle, &freq);
    if (ret != HDF_SUCCESS) {
        // 錯(cuò)誤處理
        HDF_LOGE("get freq fail, ret:%d", ret);
    }
  • 配置RTC外頻

    配置RTC外接晶體振蕩頻率,可以通過以下函數(shù)完成:

    int32_t RtcSetFreq(DevHandle handle, uint32_t freq);

    表 10?RtcSetFreq參數(shù)和返回值描述

    參數(shù) 描述
    handle DevHandle類型,RTC設(shè)備句柄
    freq uint32_t類型,RTC的外接晶體振蕩頻率,單位(HZ)
    返回值 描述
    HDF_SUCCESS 配置RTC外頻成功
    負(fù)數(shù) 配置RTC外頻失敗
    int32_t ret;
    uint32_t freq = 32768; // 32768 Hz 
    
    // 設(shè)置RTC外接晶體振蕩頻率,注意按照器件手冊要求配置RTC外頻 
    ret = RtcSetFreq(handle, freq);
    if (ret != HDF_SUCCESS) {
        // 錯(cuò)誤處理
        HDF_LOGE("set freq fail, ret:%d", ret);
        return ret;
    }
  • 復(fù)位RTC

    復(fù)位RTC,復(fù)位RTC后各配置寄存器恢復(fù)默認(rèn)值,可以通過以下函數(shù)完成:

    int32_t RtcReset(DevHandle handle);

    表 11?RtcReset參數(shù)和返回值描述

    參數(shù) 描述
    handle DevHandle類型,RTC設(shè)備句柄
    返回值 描述
    HDF_SUCCESS 復(fù)位RTC成功
    負(fù)數(shù) 復(fù)位RTC失敗
    int32_t ret;
    
    // 復(fù)位RTC,各配置寄存器恢復(fù)默認(rèn)值 
    ret = RtcReset(handle);
    if (ret != HDF_SUCCESS) {
        // 錯(cuò)誤處理
        HDF_LOGE("reset fail, ret:%d", ret);
        return ret;
    }
  • 讀取RTC自定義寄存器配置

    按照用戶定義的寄存器索引,讀取對應(yīng)的寄存器配置,一個(gè)索引對應(yīng)一字節(jié)的配置值,通過以下函數(shù)完成:

    int32_t RtcReadReg(DevHandle handle, uint8_t usrDefIndex, uint8_t *value);

    表 12?RtcReadReg參數(shù)和返回值描述

    參數(shù) 描述
    handle DevHandle類型,RTC設(shè)備句柄
    usrDefIndex uint8_t類型,用戶定義的寄存器對應(yīng)索引
    value uint8_t類型指針,待讀取寄存器值
    返回值 描述
    HDF_SUCCESS 讀取RTC自定義寄存器配置成功
    負(fù)數(shù) 讀取RTC自定義寄存器配置失敗
    int32_t ret;
    uint8_t usrDefIndex = 0; // 定義0索引對應(yīng)用戶定義的第一個(gè)寄存器
    uint8_t value = 0;
    
    // 按照用戶定義的寄存器索引,讀取對應(yīng)的寄存器配置,一個(gè)索引對應(yīng)一字節(jié)的配置值 
    ret = RtcReadReg(handle, usrDefIndex, &value);
    if (ret != HDF_SUCCESS) {
        // 錯(cuò)誤處理
        HDF_LOGE("read reg fail, ret:%d", ret);
        return ret;
    }
  • 設(shè)置RTC自定義寄存器配置

    按照用戶定義的寄存器索引,設(shè)置對應(yīng)的寄存器配置,一個(gè)索引對應(yīng)一字節(jié)的配置值,通過以下函數(shù)完成:

    int32_t RtcWriteReg(DevHandle handle, uint8_t usrDefIndex, uint8_t value);

    表 13?RtcWriteReg參數(shù)和返回值描述

    參數(shù) 描述
    handle DevHandle類型,RTC設(shè)備句柄
    usrDefIndex uint8_t類型,用戶定義的寄存器對應(yīng)索引
    value uint8_t類型,寄存器值
    返回值 描述
    HDF_SUCCESS 設(shè)置RTC自定義寄存器配置成功
    負(fù)數(shù) 設(shè)置RTC自定義寄存器配置失敗
    int32_t ret;
    uint8_t usrDefIndex = 0; // 定義0索引對應(yīng)用戶定義第一個(gè)寄存器
    uint8_t value = 0x10;
    
    // 按照用戶的定義的寄存器索引,設(shè)置對應(yīng)的寄存器配置,一個(gè)索引對應(yīng)一字節(jié)的配置值 
    ret = RtcWriteReg(handle, usrDefIndex, value);
    if (ret != HDF_SUCCESS) {
        // 錯(cuò)誤處理
        HDF_LOGE("write reg fail, ret:%d", ret);
        return ret;
    }
銷毀RTC設(shè)備句柄

銷毀RTC設(shè)備句柄,系統(tǒng)釋放對應(yīng)的資源。

void RtcClose(DevHandle handle);

表 14?RtcClose參數(shù)描述

參數(shù) 描述
handle DevHandle類型,RTC設(shè)備句柄
// 銷毀RTC句柄 
RtcClose(handle);

使用實(shí)例

本例基于Hi3516DV300開發(fā)板,提供RTC接口的完整使用流程:

  1. 系統(tǒng)啟動(dòng),驅(qū)動(dòng)管理模塊會識別系統(tǒng)當(dāng)前的RTC器件;

  2. 驅(qū)動(dòng)管理模塊完成RTC設(shè)備的初始化和設(shè)備創(chuàng)建;

  3. 用戶通過不同API,對該RTC設(shè)備進(jìn)行對應(yīng)的操作;

  4. 關(guān)閉RTC設(shè)備,釋放設(shè)備資源。

示例如下:

#include "hdf_log.h"                  // 標(biāo)準(zhǔn)日志打印頭文件
#include "osal_time.h"                // 標(biāo)準(zhǔn)延遲&睡眠接口頭文件
#include "rtc_if.h"

int32_t RtcAlarmACallback(enum RtcAlarmIndex alarmIndex)
{
    if (alarmIndex == RTC_ALARM_INDEX_A) {
        // 報(bào)警A的處理 
        HDF_LOGD("RtcAlarmACallback: RTC Alarm A callback function\n\r");
        return HDF_SUCCESS;
    } else if (alarmIndex == RTC_ALARM_INDEX_B) {
        // 報(bào)警B的處理 
        HDF_LOGD("RtcAlarmACallback:RTC Alarm B callback function\n\r");
        return HDF_SUCCESS;
    } else {
        // 錯(cuò)誤處理 
        HDF_LOGE("RtcAlarmACallback:RTC Alarm callback function fail!\n\r");
        return HDF_FAILURE;
    }
    return HDF_SUCCESS;
}

int32_t RtcTestSample(void)
{
    int32_t ret;
    struct RtcTime tm;
    struct RtcTime alarmTime;
    uint32_t freq;
    uint8_t usrDefIndex = 0;
    uint8_t value = 0;
    DevHandle handle = NULL;

    // 獲取RTC設(shè)備句柄 
    handle = RtcOpen();
    if (handle == NULL) {
        HDF_LOGE("RtcTestSample:open rtc fail!");
        return HDF_FAILURE;
    }
    // 注冊報(bào)警A的定時(shí)回調(diào)函數(shù) 
    ret = RtcRegisterAlarmCallback(handle, RTC_ALARM_INDEX_A, RtcAlarmACallback);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("RtcTestSample:register alarm callback fail, ret:%d", ret);
        goto ERR;
    }
    // 設(shè)置RTC外接晶體振蕩頻率,注意按照器件手冊要求配置RTC外頻 
    freq = 32768; // 32768 Hz 
    ret = RtcSetFreq(handle, freq);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("RtcTestSample:set freq fail, ret:%d", ret);
        goto ERR;
    }

    freq = 0;
    ret = RtcGetFreq(handle, &freq);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("RtcTestSample:get freq fail, ret:%d", ret);
        goto ERR;
    }

    // 設(shè)置RTC報(bào)警中斷使能 
    ret = RtcAlarmInterruptEnable(handle, RTC_ALARM_INDEX_A, 1);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("RtcTestSample:alarm interrupt enable fail, ret:%d", ret);
        goto ERR;
    }
    // 設(shè)置RTC時(shí)間為2020/01/01 00:00:10 .990 
    tm.year = 2020;
    tm.month = 01;
    tm.day = 01;
    tm.hour= 0;
    tm.minute = 0;
    tm.second = 10;
    tm.millisecond = 990;
    // 寫RTC時(shí)間信息 
    ret = RtcWriteTime(handle, &tm);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("RtcTestSample:write time fail, ret:%d", ret);
        goto ERR;
    }
    // 設(shè)置RTC報(bào)警時(shí)間為2020/01/01 00:00:30 .100 
    alarmTime.year = 2020;
    alarmTime.month = 01;
    alarmTime.day = 01;
    alarmTime.hour = 0;
    alarmTime.minute = 0;
    alarmTime.second = 30;
    alarmTime.millisecond = 100;
    // 設(shè)置RTC_ALARM_INDEX_A索引定時(shí)報(bào)警時(shí)間信息, 定時(shí)時(shí)間到后會打印"RTC Alarm A callback function" 
    ret = RtcWriteAlarm(handle, RTC_ALARM_INDEX_A, &alarmTime);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("RtcTestSample:write alarm fail, ret:%d", ret);
        goto ERR;
    }
    OsalSleep(5);

    ret = RtcReadAlarm(handle, RTC_ALARM_INDEX_A, &alarmTime);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("RtcTestSample: read alarm fail, ret: %d!", ret);
        goto ERR;
    }
    // 讀取RTC實(shí)時(shí)時(shí)間 
    ret = RtcReadTime(handle, &tm);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("RtcTestSample:read time fail, ret:%d", ret);
        goto ERR;
    }

    ret = RtcWriteReg(handle, usrDefIndex, value);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("RtcTestSample: write reg fail, ret: %d!", ret);
        return ret;
    }

    ret = RtcReadReg(handle, usrDefIndex, &value);
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("RtcTestSample: read reg fail, ret :%d!", ret);
        return ret;
    }

    HDF_LOGD("RtcTestSample: RTC read time:\n\r");
    HDF_LOGD("RtcTestSample: year-month-date-weekday hour:minute:second .millisecond %04u-%02u-%02u-%u %02u:%02u:%02u .%03u",
        tm.year, tm.month, tm.day, tm.weekday, tm.hour, tm.minute, tm.second, tm.millisecond);
    HDF_LOGD("RtcTestSample: all test end.");

ERR:
    // 銷毀RTC設(shè)備句柄 
    RtcClose(handle);
    return ret;
}

最后

有很多小伙伴不知道學(xué)習(xí)哪些鴻蒙開發(fā)技術(shù)?不知道需要重點(diǎn)掌握哪些鴻蒙應(yīng)用開發(fā)知識點(diǎn)?而且學(xué)習(xí)時(shí)頻繁踩坑,最終浪費(fèi)大量時(shí)間。所以有一份實(shí)用的鴻蒙(HarmonyOS NEXT)資料用來跟著學(xué)習(xí)是非常有必要的。?

這份鴻蒙(HarmonyOS NEXT)資料包含了鴻蒙開發(fā)必掌握的核心知識要點(diǎn),內(nèi)容包含了ArkTS、ArkUI開發(fā)組件、Stage模型、多端部署、分布式應(yīng)用開發(fā)、音頻、視頻、WebGL、OpenHarmony多媒體技術(shù)、Napi組件、OpenHarmony內(nèi)核、Harmony南向開發(fā)、鴻蒙項(xiàng)目實(shí)戰(zhàn)等等)鴻蒙(HarmonyOS NEXT)技術(shù)知識點(diǎn)。

希望這一份鴻蒙學(xué)習(xí)資料能夠給大家?guī)韼椭?,有需要的小伙伴自行領(lǐng)取,限時(shí)開源,先到先得~無套路領(lǐng)取??!

獲取這份完整版高清學(xué)習(xí)路線,請點(diǎn)擊→純血版全套鴻蒙HarmonyOS學(xué)習(xí)資料

鴻蒙(HarmonyOS NEXT)最新學(xué)習(xí)路線

Harmony鴻蒙南向驅(qū)動(dòng)開發(fā)-RTC接口使用,鴻蒙南向開發(fā),鴻蒙,harmonyos,華為,嵌入式硬件,鴻蒙,鴻蒙系統(tǒng),驅(qū)動(dòng)開發(fā),實(shí)時(shí)音視頻

  • ?HarmonOS基礎(chǔ)技能

Harmony鴻蒙南向驅(qū)動(dòng)開發(fā)-RTC接口使用,鴻蒙南向開發(fā),鴻蒙,harmonyos,華為,嵌入式硬件,鴻蒙,鴻蒙系統(tǒng),驅(qū)動(dòng)開發(fā),實(shí)時(shí)音視頻

  • HarmonOS就業(yè)必備技能?Harmony鴻蒙南向驅(qū)動(dòng)開發(fā)-RTC接口使用,鴻蒙南向開發(fā),鴻蒙,harmonyos,華為,嵌入式硬件,鴻蒙,鴻蒙系統(tǒng),驅(qū)動(dòng)開發(fā),實(shí)時(shí)音視頻
  • ?HarmonOS多媒體技術(shù)

Harmony鴻蒙南向驅(qū)動(dòng)開發(fā)-RTC接口使用,鴻蒙南向開發(fā),鴻蒙,harmonyos,華為,嵌入式硬件,鴻蒙,鴻蒙系統(tǒng),驅(qū)動(dòng)開發(fā),實(shí)時(shí)音視頻

  • 鴻蒙NaPi組件進(jìn)階

Harmony鴻蒙南向驅(qū)動(dòng)開發(fā)-RTC接口使用,鴻蒙南向開發(fā),鴻蒙,harmonyos,華為,嵌入式硬件,鴻蒙,鴻蒙系統(tǒng),驅(qū)動(dòng)開發(fā),實(shí)時(shí)音視頻

  • HarmonOS高級技能

Harmony鴻蒙南向驅(qū)動(dòng)開發(fā)-RTC接口使用,鴻蒙南向開發(fā),鴻蒙,harmonyos,華為,嵌入式硬件,鴻蒙,鴻蒙系統(tǒng),驅(qū)動(dòng)開發(fā),實(shí)時(shí)音視頻

  • 初識HarmonOS內(nèi)核?Harmony鴻蒙南向驅(qū)動(dòng)開發(fā)-RTC接口使用,鴻蒙南向開發(fā),鴻蒙,harmonyos,華為,嵌入式硬件,鴻蒙,鴻蒙系統(tǒng),驅(qū)動(dòng)開發(fā),實(shí)時(shí)音視頻
  • 實(shí)戰(zhàn)就業(yè)級設(shè)備開發(fā)

Harmony鴻蒙南向驅(qū)動(dòng)開發(fā)-RTC接口使用,鴻蒙南向開發(fā),鴻蒙,harmonyos,華為,嵌入式硬件,鴻蒙,鴻蒙系統(tǒng),驅(qū)動(dòng)開發(fā),實(shí)時(shí)音視頻

有了路線圖,怎么能沒有學(xué)習(xí)資料呢,小編也準(zhǔn)備了一份聯(lián)合鴻蒙官方發(fā)布筆記整理收納的一套系統(tǒng)性的鴻蒙(OpenHarmony )學(xué)習(xí)手冊(共計(jì)1236頁)鴻蒙(OpenHarmony )開發(fā)入門教學(xué)視頻,內(nèi)容包含:ArkTS、ArkUI、Web開發(fā)、應(yīng)用模型、資源分類…等知識點(diǎn)。

獲取以上完整版高清學(xué)習(xí)路線,請點(diǎn)擊→純血版全套鴻蒙HarmonyOS學(xué)習(xí)資料

《鴻蒙 (OpenHarmony)開發(fā)入門教學(xué)視頻》

Harmony鴻蒙南向驅(qū)動(dòng)開發(fā)-RTC接口使用,鴻蒙南向開發(fā),鴻蒙,harmonyos,華為,嵌入式硬件,鴻蒙,鴻蒙系統(tǒng),驅(qū)動(dòng)開發(fā),實(shí)時(shí)音視頻

《鴻蒙生態(tài)應(yīng)用開發(fā)V2.0白皮書》

Harmony鴻蒙南向驅(qū)動(dòng)開發(fā)-RTC接口使用,鴻蒙南向開發(fā),鴻蒙,harmonyos,華為,嵌入式硬件,鴻蒙,鴻蒙系統(tǒng),驅(qū)動(dòng)開發(fā),實(shí)時(shí)音視頻

《鴻蒙 (OpenHarmony)開發(fā)基礎(chǔ)到實(shí)戰(zhàn)手冊》

OpenHarmony北向、南向開發(fā)環(huán)境搭建

Harmony鴻蒙南向驅(qū)動(dòng)開發(fā)-RTC接口使用,鴻蒙南向開發(fā),鴻蒙,harmonyos,華為,嵌入式硬件,鴻蒙,鴻蒙系統(tǒng),驅(qū)動(dòng)開發(fā),實(shí)時(shí)音視頻

?《鴻蒙開發(fā)基礎(chǔ)》

  • ArkTS語言
  • 安裝DevEco Studio
  • 運(yùn)用你的第一個(gè)ArkTS應(yīng)用
  • ArkUI聲明式UI開發(fā)
  • .……

Harmony鴻蒙南向驅(qū)動(dòng)開發(fā)-RTC接口使用,鴻蒙南向開發(fā),鴻蒙,harmonyos,華為,嵌入式硬件,鴻蒙,鴻蒙系統(tǒng),驅(qū)動(dòng)開發(fā),實(shí)時(shí)音視頻

?《鴻蒙開發(fā)進(jìn)階》

  • Stage模型入門
  • 網(wǎng)絡(luò)管理
  • 數(shù)據(jù)管理
  • 電話服務(wù)
  • 分布式應(yīng)用開發(fā)
  • 通知與窗口管理
  • 多媒體技術(shù)
  • 安全技能
  • 任務(wù)管理
  • WebGL
  • 國際化開發(fā)
  • 應(yīng)用測試
  • DFX面向未來設(shè)計(jì)
  • 鴻蒙系統(tǒng)移植和裁剪定制
  • ……

Harmony鴻蒙南向驅(qū)動(dòng)開發(fā)-RTC接口使用,鴻蒙南向開發(fā),鴻蒙,harmonyos,華為,嵌入式硬件,鴻蒙,鴻蒙系統(tǒng),驅(qū)動(dòng)開發(fā),實(shí)時(shí)音視頻

《鴻蒙進(jìn)階實(shí)戰(zhàn)》

  • ArkTS實(shí)踐
  • UIAbility應(yīng)用
  • 網(wǎng)絡(luò)案例
  • ……

Harmony鴻蒙南向驅(qū)動(dòng)開發(fā)-RTC接口使用,鴻蒙南向開發(fā),鴻蒙,harmonyos,華為,嵌入式硬件,鴻蒙,鴻蒙系統(tǒng),驅(qū)動(dòng)開發(fā),實(shí)時(shí)音視頻

?獲取以上完整鴻蒙HarmonyOS學(xué)習(xí)資料,請點(diǎn)擊→純血版全套鴻蒙HarmonyOS學(xué)習(xí)資料

總結(jié)

總的來說,華為鴻蒙不再兼容安卓,對中年程序員來說是一個(gè)挑戰(zhàn),也是一個(gè)機(jī)會。只有積極應(yīng)對變化,不斷學(xué)習(xí)和提升自己,他們才能在這個(gè)變革的時(shí)代中立于不敗之地。?

Harmony鴻蒙南向驅(qū)動(dòng)開發(fā)-RTC接口使用,鴻蒙南向開發(fā),鴻蒙,harmonyos,華為,嵌入式硬件,鴻蒙,鴻蒙系統(tǒng),驅(qū)動(dòng)開發(fā),實(shí)時(shí)音視頻文章來源地址http://www.zghlxwxcb.cn/news/detail-850287.html

到了這里,關(guān)于Harmony鴻蒙南向驅(qū)動(dòng)開發(fā)-RTC接口使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 鴻蒙HarmonyOS應(yīng)用開發(fā)能找到工作么?_harmony os 應(yīng)用開發(fā)前景

    鴻蒙HarmonyOS應(yīng)用開發(fā)能找到工作么?_harmony os 應(yīng)用開發(fā)前景

    四、如何學(xué)習(xí)鴻蒙HarmonyOS應(yīng)用開發(fā)技術(shù)? 為了能夠幫助大家快速掌握鴻蒙(Harmony NEXT)應(yīng)用開發(fā)技術(shù)知識。 首先得是開發(fā)語言 ArkTS,這個(gè)尤為重要,然后就是ArkUI聲明式UI開發(fā)、Stage模型、網(wǎng)絡(luò)/數(shù)據(jù)庫管理、分布式應(yīng)用開發(fā)、進(jìn)程間通信與線程間通信技術(shù)、OpenHarmony多媒體技

    2024年04月27日
    瀏覽(32)
  • 鴻蒙Harmony應(yīng)用開發(fā)—ArkTS聲明式開發(fā)(容器組件:UIExtensionComponent (系統(tǒng)接口))

    鴻蒙Harmony應(yīng)用開發(fā)—ArkTS聲明式開發(fā)(容器組件:UIExtensionComponent (系統(tǒng)接口))

    UIExtensionComponent用于支持在本頁面內(nèi)嵌入其他應(yīng)用提供的UI。展示的內(nèi)容在另外一個(gè)進(jìn)程中運(yùn)行,本應(yīng)用并不參與其中的布局和渲染。 通常用于有進(jìn)程隔離訴求的模塊化開發(fā)場景。 說明: 該組件從API Version 10開始支持。后續(xù)版本如有新增內(nèi)容,則采用上角標(biāo)單獨(dú)標(biāo)記該內(nèi)容的

    2024年04月13日
    瀏覽(68)
  • OpenHarmony鴻蒙南向開發(fā)案例:【智能門鈴】

    OpenHarmony鴻蒙南向開發(fā)案例:【智能門鈴】

    樣例簡介 智能門鈴?fù)ㄟ^監(jiān)控來訪者信息,告訴主人門外是否有人按鈴、有陌生人靠近或者無人狀態(tài)。主人可以在數(shù)字管家中遠(yuǎn)程接收消息,并根據(jù)需要進(jìn)行遠(yuǎn)程取消報(bào)警和一鍵開鎖。同時(shí),也可以通過室內(nèi)屏幕獲取門外狀態(tài)。室內(nèi)屏幕顯示界面使用DevEco Studio 編寫的js應(yīng)用,

    2024年04月26日
    瀏覽(19)
  • OpenHarmony鴻蒙南向開發(fā)案例:【智能貓眼(基于3518開發(fā)板)】

    OpenHarmony鴻蒙南向開發(fā)案例:【智能貓眼(基于3518開發(fā)板)】

    樣例簡介 本Demo是基于Hi3518開發(fā)板,使用開源OpenHarmony開發(fā)的RTSP協(xié)議流媒體應(yīng)用。達(dá)到將Hi3518開發(fā)板中攝像頭獲取的數(shù)據(jù)通過RTSP協(xié)議傳輸?shù)绞謾C(jī)并顯示 。 rtsp實(shí)現(xiàn)可參考文檔:openharmony_1.0.1實(shí)現(xiàn)RTSPServer 運(yùn)行效果 樣例原理 如上圖所示,手機(jī)播放3518攝像頭采集的視頻數(shù)據(jù)。 工

    2024年04月28日
    瀏覽(41)
  • harmony 鴻蒙使用N-API開發(fā)Native模塊

    harmony 鴻蒙使用N-API開發(fā)Native模塊,其實(shí)就是Node.js 官網(wǎng)中已經(jīng)給出 N-API 接口基礎(chǔ)能力,同時(shí),方舟 ArkTS 運(yùn)行時(shí)提供的 N-API 接口,封裝了方舟引擎的能力,在功能上與 Node.js 社區(qū)保持一致。 N-API 是 Node.js Addon Programming Interface 的縮寫,是 Node.js 提供的一組 C++ API,封裝了V8 引擎

    2024年02月21日
    瀏覽(22)
  • harmony 鴻蒙安全和高效的使用N-API開發(fā)Native模塊_鴻蒙native開發(fā)(1)

    harmony 鴻蒙安全和高效的使用N-API開發(fā)Native模塊_鴻蒙native開發(fā)(1)

    接口調(diào)用 跨語言調(diào)用是指在一個(gè)程序中使用多種編程語言編寫的代碼,并且這些代碼可以相互調(diào)用和交互,ArkTS 調(diào)用 C++ 就是一種跨語言調(diào)用的方式。使用 N-API 進(jìn)行函數(shù)調(diào)用會引入一定的開銷,因?yàn)樾枰M(jìn)行上下文切換、參數(shù)傳遞、函數(shù)調(diào)用和返回值處理等,這些過程都涉及

    2024年04月27日
    瀏覽(46)
  • 詳細(xì)教程 - 從零開發(fā) Vue 鴻蒙harmonyOS應(yīng)用 第五節(jié) (基于uni-app封裝鴻蒙接口請求庫)

    詳細(xì)教程 - 從零開發(fā) Vue 鴻蒙harmonyOS應(yīng)用 第五節(jié) (基于uni-app封裝鴻蒙接口請求庫)

    ??隨著鴻蒙系統(tǒng)的興起,越來越多的app會采用鴻蒙開發(fā)。而鴻蒙開發(fā)必不可少的就是調(diào)用各種接口服務(wù)。為了簡化接口的調(diào)用流程,我們通常會做一層封裝。今天就來講解一下,如何用uni-app封裝鴻蒙的接口請求庫。 ??首先我們要新建一個(gè)鴻蒙項(xiàng)目啦!當(dāng)然選擇第一個(gè)空白項(xiàng)

    2024年02月02日
    瀏覽(26)
  • harmony 鴻蒙安全和高效的使用N-API開發(fā)Native模塊

    harmony 鴻蒙安全和高效的使用N-API開發(fā)Native模塊

    N-API 是 Node.js Addon Programming Interface 的縮寫,是 Node.js 提供的一組 C++ API,封裝了V8 引擎的能力,用于編寫 Node.js 的 Native 擴(kuò)展模塊。通過 N-API,開發(fā)者可以使用 C++ 編寫高性能的 Node.js 模塊,同時(shí)保持與 Node.js 的兼容性。 Node.js 官網(wǎng)中已經(jīng)給出 N-API 接口基礎(chǔ)能力的介紹,同時(shí)

    2024年02月22日
    瀏覽(24)
  • HarmonyOS 鴻蒙開發(fā)DevEco Studio OpenHarmony:使用低代碼進(jìn)行開發(fā)

    HarmonyOS 鴻蒙開發(fā)DevEco Studio OpenHarmony:使用低代碼進(jìn)行開發(fā)

    OpenHarmony低代碼開發(fā)方式,具有豐富的UI界面編輯功能,遵循JS、TS開發(fā)規(guī)范 ,通過可視化界面開發(fā)方式快速構(gòu)建布局,可有效降低用戶的時(shí)間成本和提升用戶構(gòu)建UI界面的效率。 說明 支持使用低代碼進(jìn)行JS/eTS頁面開發(fā),本章節(jié)以開發(fā)eTS頁面為例,介紹低代碼功能及使用方法。

    2024年02月19日
    瀏覽(89)
  • 鴻蒙:Harmony開發(fā)基礎(chǔ)知識詳解

    鴻蒙:Harmony開發(fā)基礎(chǔ)知識詳解

    工欲善其事,必先利其器。 上一篇博文實(shí)現(xiàn)了一個(gè) \\\"Hello Harmony\\\" 的Demo,今天這篇博文就以 \\\"Hello Harmony\\\"? 為例,以官網(wǎng)開發(fā)文檔為依據(jù),從鴻蒙開發(fā)主要的幾個(gè)方面入手,詳細(xì)了解一下鴻蒙開發(fā)所需的基礎(chǔ)知識。 HarmonyOS提供了一套UI開發(fā)框架,即 方舟開發(fā)框架 ( ArkUI框架 )

    2024年02月05日
    瀏覽(65)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包