衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

rtc通用接口鬧鐘通用接口的運(yùn)用精講

AGk5_ZLG_zhiyua ? 來(lái)源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2017-11-08 14:38 ? 次閱讀

第六章為重用外設(shè)驅(qū)動(dòng)代碼,本文內(nèi)容包含6.3 RTC 實(shí)時(shí)時(shí)鐘前四個(gè)小節(jié):

6.3.1 PCF85063

6.3.2 RTC 通用接口

6.3.3 鬧鐘通用接口

6.3.4 系統(tǒng)時(shí)間

6.3.5 特殊功能控制接口

6.3 RTC 實(shí)時(shí)時(shí)鐘

本節(jié)將以PCF85063 為例,詳細(xì)介紹RTC 通用接口,鬧鐘通用接口等。在本節(jié)的最后兩小節(jié),將介紹另外兩款RTC 芯片:RX8025T 和DS1302,雖然它們與PCF85063 存在差異,但卻可以使用同樣的通用接口對(duì)其進(jìn)行操作,實(shí)現(xiàn)了RTC 應(yīng)用的跨平臺(tái)復(fù)用。

>>> 6.3.1 PCF85063

1. 器件簡(jiǎn)介

PCF85063 是一款低功耗實(shí)時(shí)時(shí)鐘/日歷芯片,它提供了實(shí)時(shí)時(shí)間的設(shè)置與獲取、鬧鐘、可編程時(shí)鐘輸出、定時(shí)器/報(bào)警/半分鐘/分鐘中斷輸出等功能。

NXP 半導(dǎo)體公司的PCF85063 引腳封裝詳見(jiàn)圖6.4,其中的SCL 和SDA 為I2C 接口引腳,VDD 和VSS 分別為電源和地;OSCI 和OSCO 為32.768KHz 的晶振連接引腳,作為PCF85063 的時(shí)鐘源;CLKOUT 為時(shí)鐘信號(hào)輸出,供其它外部電路使用;INT 為中斷引腳,主要用于鬧鐘等功能。

圖6.4 PCF85063 引腳定義

PCF85063 的7 位I2C 從機(jī)地址為0x51,MicroPort-RTC 模塊通過(guò)MicroPort 接口與AM824-Core 相連,SCL 和SDA 分別與PIO0_16 和PIO0_18 連接,詳見(jiàn)圖6.5。若焊接R1,則INT 與PIO0_1 相連;若焊接R3,則INT 與PIO0_8 相連;若焊接R2,則CLKOUT 與PIO0_24 相連。

圖6.5 PCF85063 電路原理

2. 器件初始化

在使用PCF85063 前,必須完成PCF85063 的初始化操作,以獲取對(duì)應(yīng)的操作句柄,進(jìn)而才能使用PCF85063 的各種功能,初始化函數(shù)原型(am_pcf85063.h)為:

該函數(shù)意在獲取PCF85063 器件的實(shí)例句柄,其中,p_dev 為指向am_pcf85063_dev_t類型實(shí)例的指針,int_pin 作為實(shí)例信息,指定PCF85063 的INT 與MCU 的連接引腳號(hào)。

(1)實(shí)例

定義am_pcf85063_dev_t 類型(am_pcf85063.h)實(shí)例如下:

其中,g_pcf85063_dev 為用戶自定義的實(shí)例,其地址作為p_dev 的實(shí)參傳遞。

(2)實(shí)例信息

實(shí)例信息僅一個(gè)中斷引腳信息,用于指定PCF85063 的INT 與MCU 的引腳號(hào)相連,便于使用鬧鐘等功能。假設(shè)使用PIO0_1,則PIO0_1 作為int_pin 的實(shí)參傳遞。

(3)I2C 句柄i2c_handle

I2C1 為例,其實(shí)例初始化函數(shù)am_lpc82x_i2c1_inst_init ()的返回值將作為實(shí)參傳遞給i2c_handle。即:

(4)實(shí)例句柄

PCF85063 初始化函數(shù)am_pcf85063_init ()的返回值,作為實(shí)參傳遞給其它功能接口函數(shù)的第一個(gè)參數(shù)(handle)。am_pcf85063_handle_t 類型的定義(am_pcf85063.h)如下:

若返回值為NULL,說(shuō)明初始化失敗;若返回值不為NULL,說(shuō)明返回值handle 有效。

基于模塊化編程思想,將初始化相關(guān)的實(shí)例、實(shí)例信息等的定義存放到對(duì)應(yīng)的配置文件中,通過(guò)頭文件引出實(shí)例初始化函數(shù)接口,源文件和頭文件的程序范例分別詳見(jiàn)程序清單6.39 和程序清單6.40。

程序清單6.39 實(shí)例初始化函數(shù)實(shí)現(xiàn)(am_hwconf_pcf85063.c)

程序清單6.40 實(shí)例初始化函數(shù)聲明(am_hwconf_pcf85063.h)

后續(xù)只需要使用無(wú)參數(shù)的實(shí)例初始化函數(shù),即可獲取到PCF85063 的實(shí)例句柄。即:

>>> 6.3.2 RTC 通用接口

PCF85063 作為一種典型的RTC 器件,可以使用RTC(Real-Time Clock)通用接口設(shè)置和獲取時(shí)間,其函數(shù)原型詳見(jiàn)表6.10。

表6.10 RTC 通用接口函數(shù)(am_rtc.h)

可見(jiàn),這些接口函數(shù)的第一個(gè)參數(shù)均為am_rtc_handle_t 類型的RTC 句柄,顯然,其并非前文通過(guò)PCF85063 實(shí)例初始化函數(shù)獲取的am_pcf85063_handle_t 類型的句柄。

RTC 時(shí)間設(shè)置和獲取只是PCF85063 提供的一個(gè)主要功能,PCF85063 還能提供鬧鐘等功能。PCF85063 的驅(qū)動(dòng)提供了相應(yīng)的接口用于獲取PCF85063 的RTC 句柄,以便用戶通過(guò)RTC 通用接口操作PCF85063,其函數(shù)原型為:

該函數(shù)意在獲取RTC 句柄,其中,PCF85063 實(shí)例的句柄(pcf85063_handle)作為實(shí)參傳遞給handle,p_rtc 為指向am_rtc_serv_t 類型實(shí)例的指針,無(wú)實(shí)例信息。定義am_rtc_serv_t類型(am_rtc.h)實(shí)例如下:

其中,g_pcf85063_rtc 為用戶自定義的實(shí)例,其地址作為p_rtc 的實(shí)參傳遞。

基于模塊化編程思想,將初始化相關(guān)的實(shí)例定義存放到對(duì)應(yīng)的配置文件中,通過(guò)頭文件引出實(shí)例初始化函數(shù)接口,源文件和頭文件分別詳見(jiàn)程序清單6.41 和程序清單6.42。

程序清單6.41 新增PCF85063 的RTC 實(shí)例初始化函數(shù)(am_hwconf_pcf85063.c)

程序清單6.42 am_hwconf_pcf85063.h 文件內(nèi)容更新(1)

后續(xù)只需要使用無(wú)參數(shù)的RTC 實(shí)例初始化函數(shù),即可獲取RTC 實(shí)例句柄。即:

1. 設(shè)置時(shí)間

該函數(shù)用于設(shè)置RTC 器件的當(dāng)前時(shí)間值,其函數(shù)原型為:

其中,handle 為RTC 實(shí)例句柄,p_tm 為指向細(xì)分時(shí)間(待設(shè)置的時(shí)間值)的指針。返回AM_OK,表示設(shè)置成功,反之失敗。其類型am_tm_t 是在am_time.h 中定義的細(xì)分時(shí)間結(jié)構(gòu)體類型,用于表示年/月/日/時(shí)/分/秒等信息。即:

其中,tm_mon 表示月份,分別對(duì)應(yīng)1~12 月。tm_year 表示年,1900 年至今的年數(shù),其實(shí)際年為該值加上1900。tm_wday;表示星期,0~6 分別對(duì)應(yīng)星期日~星期六。tm_yday 表示1 月1 日以來(lái)的的天數(shù)(0~365),0 對(duì)應(yīng)1 月1 日。tm_isdst 表示夏令時(shí),夏季將調(diào)快1 小時(shí)。如果不用,則設(shè)置為-1。設(shè)置年/月/日/時(shí)/分/秒的值詳見(jiàn)程序清單6.43,星期等附加的一些信息無(wú)需用戶設(shè)置,主要便于在獲取時(shí)間時(shí)得到更多的信息。

程序清單6.43 設(shè)置時(shí)間范例程序

2. 獲取時(shí)間

該函數(shù)用于獲取當(dāng)前時(shí)間值,其函數(shù)原型為:

其中,handle 為RTC 實(shí)例句柄,p_tm 為指向細(xì)分時(shí)間的指針,用于獲取細(xì)分時(shí)間。返回AM_OK,表示獲取成功,反之失敗,范例程序詳見(jiàn)程序清單6.44。

程序清單6.44 獲取細(xì)分時(shí)間范例程序

基于RTC 通用接口,可以編寫一個(gè)通用的時(shí)間顯示應(yīng)用程序:每隔1s 通過(guò)調(diào)試串口打印當(dāng)前的時(shí)間值。應(yīng)用程序的實(shí)現(xiàn)和接口聲明分別詳見(jiàn)程序清單6.45 和程序清單6.46。

程序清單6.45 RTC 時(shí)間顯示應(yīng)用程序(app_rtc_time_show.c)

程序清單6.46 RTC 時(shí)間顯示接口聲明(app_rtc_time_show.h)

為了啟動(dòng)該應(yīng)用程序,必須提供一個(gè)RTC 實(shí)例句柄以指定設(shè)置時(shí)間和獲取時(shí)間的RTC對(duì)象,若使用PCF85063,則RTC 實(shí)例句柄可通過(guò)實(shí)例初始化函數(shù)am_pcf85063_rtc_inst_init()獲得,范例程序詳見(jiàn)程序清單6.47。

程序清單6.47 啟動(dòng)RTC 應(yīng)用程序(基于PCF85063)

>>> 6.3.3 鬧鐘通用接口

PCF85063 除提供基本的RTC 功能外,還可以提供鬧鐘功能,可以使用鬧鐘通用接口設(shè)置使用鬧鐘,其函數(shù)原型詳見(jiàn)表6.11。

表6.11 鬧鐘通用接口函數(shù)(am_alarm_clk.h)

由此可見(jiàn),這些接口函數(shù)的第一個(gè)參數(shù)均為am_alarm_clk_handle_t 類型的鬧鐘句柄,PCF85063 的驅(qū)動(dòng)提供了相應(yīng)的接口用于獲取PCF85063 的鬧鐘句柄,以便用戶通過(guò)鬧鐘通用接口操作PCF85063,其函數(shù)原型為:

該函數(shù)意在獲取鬧鐘句柄,其中,PCF85063 實(shí)例的句柄(pcf85063_handle)作為實(shí)參傳遞給handle,p_alarm_clk 為指向am_alarm_clk_serv_t 類型實(shí)例的指針,無(wú)實(shí)例信息。定義am_alarm_clk_serv_t 類型(am_alarm_clk.h)實(shí)例如下:

其中,g_pcf85063_alarm_clk 為用戶自定義的實(shí)例,其地址作為p_alarm_clk 的實(shí)參傳遞。

基于模塊化編程思想,將初始化相關(guān)的實(shí)例定義存放到對(duì)應(yīng)的配置文件中,通過(guò)頭文件引出實(shí)例初始化函數(shù)接口,源文件和頭文件分別詳見(jiàn)程序清單6.48 和程序清單6.49。

程序清單6.48 新增PCF85063 的鬧鐘實(shí)例初始化函數(shù)(am_hwconf_pcf85063.c)

程序清單6.49 am_hwconf_pcf85063.h 文件內(nèi)容更新(2)

后續(xù)只需要使用無(wú)參數(shù)的鬧鐘實(shí)例初始化函數(shù),即可獲取鬧鐘實(shí)例句柄。即:

1. 設(shè)置鬧鐘時(shí)間

該函數(shù)用于設(shè)置鬧鐘時(shí)間,其函數(shù)原型為:

其中,handle 為鬧鐘實(shí)例句柄,p_tm 為指向鬧鐘時(shí)間(待設(shè)置的時(shí)間值)的指針。返回AM_OK,表示設(shè)置成功,反之失敗。類型am_alarm_clk_tm_t 是在am_alarm_clk.h 中定義的鬧鐘時(shí)間結(jié)構(gòu)體類型,用于表示鬧鐘時(shí)間信息。即:

其中,min 表示鬧鐘時(shí)間的分,hour 鬧鐘時(shí)間的小時(shí),wdays 用于指定鬧鐘在周幾有效,可以是周一至周日的任意一天或幾天。其可用的值已經(jīng)使用宏進(jìn)行了定義,比如,AM_ALARM_CLK_SUNDAY 位星期日有效,AM_ALARM_CLK_MONDAY 為星期一有效,AM_ALARM_CLK_TUESDAY 為星期二有效,AM_ALARM_CLK_WEDNESDAY 為星期三有效,AM_ALARM_CLK_THURSDAY 為星期四有效,M_ALARM_CLK_FRIDAY 為星期五有效,AM_ALARM_CLK_SATURDAY 為星期六有效,AM_ALARM_CLK_WORKDAY為工作日有效,AM_ALARM_CLK_EVERYDAY 為每天均有效。

若需鬧鐘在多天同時(shí)有效,則可以將多個(gè)宏值使用“|”連接起來(lái),比如,要使鬧鐘在星期一和星期二有效,則其值為:

AM_ALARM_CLK_MONDAY | AM_ALARM_CLK_TUESDAY。

若需鬧鐘在星期一至星期五有效(工作日有效),則其值為:

AM_ALARM_CLK_WORKDAY。

若需鬧鐘在每一天均有效,這其值為AM_ALARM_CLK_EVERYDAY,設(shè)置鬧鐘的范例程序詳見(jiàn)程序清單6.50。

程序清單6.50 設(shè)置鬧鐘時(shí)間的范例程序

2. 設(shè)置鬧鐘回調(diào)函數(shù)

PCF85063 可以在指定的時(shí)間產(chǎn)生鬧鐘事件,當(dāng)事件發(fā)生時(shí),由于需要通知應(yīng)用程序,因此需要由應(yīng)用程序設(shè)置一個(gè)回調(diào)函數(shù),在鬧鐘事件發(fā)生時(shí)自動(dòng)調(diào)用應(yīng)用程序設(shè)置的回調(diào)函數(shù)。設(shè)置鬧鐘回調(diào)函數(shù)原型為:

其中,handle 為鬧鐘實(shí)例句柄,pfn_callback 為指向?qū)嶋H回調(diào)函數(shù)的指針,p_arg 為回調(diào)函數(shù)的參數(shù)。若返回AM_OK,表示設(shè)置成功,反之失敗。

函數(shù)指針的類型am_pfnvoid_t 在am_types.h 中定義,即:

當(dāng)鬧鐘事件發(fā)生時(shí),將自動(dòng)調(diào)用pfn_callback 指向的回調(diào)函數(shù),傳遞給該回調(diào)函數(shù)的void*類型的參數(shù)就是p_arg 設(shè)定值,范例程序詳見(jiàn)程序清單6.51。

程序清單6.51 設(shè)置鬧鐘回調(diào)函數(shù)范例程序

3. 打開(kāi)鬧鐘

該函數(shù)用于打開(kāi)鬧鐘,以便當(dāng)鬧鐘時(shí)間到時(shí),自動(dòng)調(diào)用用戶設(shè)定的回調(diào)函數(shù),其函數(shù)原型為:

其中,handle 為鬧鐘實(shí)例句柄。返回AM_OK,表示打開(kāi)成功,反之失敗,范例程序詳見(jiàn)程序清單6.52。

程序清單6.52 打開(kāi)鬧鐘范例程序

4. 關(guān)閉鬧鐘

該函數(shù)用于關(guān)閉鬧鐘,其函數(shù)原型為:

其中,handle 為鬧鐘實(shí)例句柄。返回AM_OK,表示關(guān)閉成功,反之失敗,范例程序詳見(jiàn)程序清單6.53。

程序清單6.53 關(guān)閉鬧鐘范例程序

基于鬧鐘通用接口,可以編寫一個(gè)通用的鬧鐘測(cè)試應(yīng)用程序:設(shè)定當(dāng)前時(shí)間為09:32:30,鬧鐘時(shí)間為09:34,一分半后,達(dá)到鬧鐘時(shí)間,蜂鳴器鳴叫1 分鐘。鬧鐘測(cè)試應(yīng)用程序的實(shí)現(xiàn)和接口聲明分別詳見(jiàn)程序清單6.54 和程序清單6.55。

程序清單6.54 鬧鐘測(cè)試應(yīng)用程序(app_alarm_clk_test.c)

程序清單6.55 鬧鐘測(cè)試應(yīng)用程序接口聲明(app_alarm_clk_test.h)

為了啟動(dòng)該應(yīng)用程序,必須提供一個(gè)RTC 實(shí)例句柄以設(shè)置當(dāng)前時(shí)間與一個(gè)鬧鐘實(shí)例句柄用于設(shè)置鬧鐘,若使用PCF85063,則RTC 實(shí)例句柄可通過(guò)am_pcf85063_rtc_inst_init()獲得,鬧鐘實(shí)例句柄可通過(guò)am_pcf85063_alarm_clk_inst_init()獲得,范例程序詳見(jiàn)程序清單6.56。

程序清單6.56 啟動(dòng)鬧鐘測(cè)試應(yīng)用程序(基于PCF85063)

>>> 6.3.4 系統(tǒng)時(shí)間

AMetal 平臺(tái)提供了一個(gè)系統(tǒng)時(shí)間,進(jìn)行設(shè)置和獲取系統(tǒng)時(shí)間的函數(shù)原型詳見(jiàn)表6.12。

表6.12 系統(tǒng)時(shí)間接口函數(shù)(am_time.h)

1. 系統(tǒng)時(shí)間

系統(tǒng)時(shí)間的3 種表示形式分別為日歷時(shí)間、精確日歷時(shí)間、細(xì)分時(shí)間,細(xì)分時(shí)間前文已有介紹,這里僅介紹日歷時(shí)間和精確日歷時(shí)間。

  • 日歷時(shí)間

與標(biāo)準(zhǔn)C 的定義相同,日歷時(shí)間表示從1970 年1 月1 日1 時(shí)0 分0 秒開(kāi)始的秒數(shù)。其類型am_time_t 定義如下:

  • 精確日歷時(shí)間

日歷時(shí)間精度為秒,精確日歷時(shí)間的精度可以達(dá)到納秒,精確日歷時(shí)間只是在日歷時(shí)間的基礎(chǔ)上,增加了一個(gè)納秒計(jì)數(shù)器,其類型am_timespec_t(am_time.h)定義如下:

當(dāng)納秒值達(dá)到1000000000 時(shí),則秒值加1;當(dāng)該值復(fù)位為0 時(shí),則重新計(jì)數(shù)。

2. 初始化

使用系統(tǒng)時(shí)間前,必須初始化系統(tǒng)時(shí)間,其函數(shù)原型為:

其中,rtc_handle 用于指定系統(tǒng)時(shí)間使用的RTC,系統(tǒng)時(shí)間將使用該RTC 保存時(shí)間和獲取時(shí)間。update_sysclk_ns 和 update_rtc_s 用以指定更新系統(tǒng)時(shí)間相關(guān)的參數(shù)。

  • RTC 句柄rtc_handle

獲取RTC 句柄可通過(guò)RTC 實(shí)例初始化函數(shù)獲取,以作為rtc_handle 的實(shí)參傳遞。即:

  • 與系統(tǒng)時(shí)間更新相關(guān)的參數(shù)(update_sysclk_ns 和 update_rtc_s)

每個(gè)MCU 都有一個(gè)系統(tǒng)時(shí)鐘,比如,LPC824,其系統(tǒng)時(shí)鐘的頻率為30MHz,常常稱之為主頻,在短時(shí)間內(nèi),該時(shí)鐘的誤差是很小的。由于直接讀取MCU 中的數(shù)據(jù)要比通過(guò)I2C讀取RTC 器件上的數(shù)據(jù)快得多,因此根據(jù)系統(tǒng)時(shí)鐘獲取時(shí)間值比直接從RTC 器件中獲取時(shí)間值要快得多,完全可以在短時(shí)間內(nèi)使用該時(shí)鐘更新系統(tǒng)時(shí)間,比如,每隔1ms 將精確日歷時(shí)間的納秒值增加1000000。但長(zhǎng)時(shí)間使用該時(shí)鐘來(lái)更新系統(tǒng)時(shí)間,勢(shì)必產(chǎn)生較大的誤差,這就需要每隔一定的時(shí)間重新從RTC 器件中,讀取精確的時(shí)間值來(lái)更新系統(tǒng)時(shí)間,以確保系統(tǒng)時(shí)間的精度。

update_sysclk_ns 為指定使用系統(tǒng)時(shí)鐘更新系統(tǒng)時(shí)間的時(shí)間間隔,其單位為ns,通常設(shè)置為1~100ms,即1000000~100000000。update_rtc_s 為指定使用RTC 器件更新系統(tǒng)時(shí)間的時(shí)間間隔,若對(duì)精度要求特別高,將該值設(shè)置為1,即每秒都使用RTC 更新一次系統(tǒng)時(shí)間,通常設(shè)置為10~ 60 較為合理。

基于此,將初始化函數(shù)調(diào)用在添加到配置文件中,通過(guò)頭文件引出系統(tǒng)時(shí)間的實(shí)例初始化函數(shù)接口,詳見(jiàn)程序清單6.57 和程序清單6.58。

程序清單6.57 PCF85063 用作系統(tǒng)時(shí)間的實(shí)例初始化(am_hwconf_pcf85063.c)

程序清單6.58 am_hwconf_pcf85063.h 文件內(nèi)容更新(2)

后續(xù)只需要簡(jiǎn)單的調(diào)用該無(wú)參函數(shù),即可完成系統(tǒng)時(shí)間的初始化。即:

3. 設(shè)置系統(tǒng)時(shí)間

根據(jù)不同的時(shí)間表示形式,有2 種設(shè)置系統(tǒng)時(shí)間方式。

  • 精確日歷時(shí)間設(shè)置的函數(shù)原型為:

其中,p_tv 為指向精確日歷時(shí)間(待設(shè)置的時(shí)間值)的指針。若返回AM_OK,表示設(shè)置成功,反之失敗,范例程序詳見(jiàn)程序清單6.59。

程序清單6.59 使用精確日歷時(shí)間設(shè)置系統(tǒng)時(shí)間范例程序

將精確日歷時(shí)間的秒值設(shè)置為了1472175150,該值是從1970 年1 月1 日0 時(shí)0 分0 秒至2016 年8 月26 日09 時(shí)32 分30 秒的秒數(shù)。即將時(shí)間設(shè)置為2016 年8 月26 日09 時(shí)32分30 秒。通常不會(huì)這樣設(shè)置時(shí)間值,均是采用細(xì)分時(shí)間方式設(shè)置時(shí)間值。

  • 細(xì)分時(shí)間設(shè)置的函數(shù)原型為:

其中,p_tm 為指向細(xì)分時(shí)間(待設(shè)置的時(shí)間值)的指針。若返回AM_OK,表示設(shè)置成功,反之失敗,范例程序詳見(jiàn)程序清單6.60。

程序清單6.60 使用細(xì)分時(shí)間設(shè)置系統(tǒng)時(shí)間范例程序

將時(shí)間設(shè)置為2016 年8 月26 日09:32:30,當(dāng)使用細(xì)分時(shí)間設(shè)置時(shí)間值時(shí),則細(xì)分時(shí)間的成員tm_wday, tm_yday 在調(diào)用后被更新。如果不使用夏令時(shí),則設(shè)置為-1。

4. 獲取系統(tǒng)時(shí)間

根據(jù)不同的時(shí)間表示形式,有3 種獲取系統(tǒng)時(shí)間的方式。

  • 獲取日歷時(shí)間的函數(shù)原型為:

其中,p_time 為指向日歷時(shí)間的指針,用于獲取日歷時(shí)間。返回值同樣為日歷時(shí)間,若返回值為-1,表明獲取失敗,通過(guò)返回值獲取日歷時(shí)間的范例程序詳見(jiàn)程序清單6.61。

程序清單6.61 通過(guò)返回值獲取日歷時(shí)間范例程序

也可以通過(guò)參數(shù)獲得日歷時(shí)間,范例程序詳見(jiàn)程序清單6.62。

程序清單6.62 通過(guò)參數(shù)獲取日歷時(shí)間范例程序

  • 獲取精確日歷時(shí)間的函數(shù)原型為:

其中,p_tv 為指向精確日歷時(shí)間的指針,用于獲取精確日歷時(shí)間。若返回AM_OK,獲取成功,反之失敗,范例程序詳見(jiàn)程序清單6.63。

程序清單6.63 讀取精確日歷時(shí)間范例程序

  • 獲取細(xì)分時(shí)間的函數(shù)原型為:

其中,p_tm 為指向細(xì)分時(shí)間的指針,用于獲取細(xì)分時(shí)間。若返回AM_OK,表示獲取成功,反之失敗,范例程序詳見(jiàn)程序清單6.64。

程序清單6.64 獲取細(xì)分時(shí)間范例程序

基于系統(tǒng)時(shí)間相關(guān)接口,可以編寫一個(gè)通用的系統(tǒng)時(shí)間測(cè)試應(yīng)用程序:每隔1s 通過(guò)調(diào)試串口打印當(dāng)前的系統(tǒng)時(shí)間值。應(yīng)用程序的實(shí)現(xiàn)和接口聲明分別詳見(jiàn)程序清單6.65 和程序清單6.66。

程序清單6.65 系統(tǒng)時(shí)間測(cè)試應(yīng)用程序(app_sys_time_show.c)

程序清單6.66 系統(tǒng)時(shí)間測(cè)試應(yīng)用程序接口聲明(app_sys_time_show.h)

由此可見(jiàn),在應(yīng)用程序中,不再使用到任何實(shí)例句柄,使得應(yīng)用程序不與任何具體器件直接關(guān)聯(lián),系統(tǒng)時(shí)間的定義使得應(yīng)用程序在使用時(shí)間時(shí)更加便捷。在啟動(dòng)應(yīng)用程序前,必須完成系統(tǒng)時(shí)間的初始化,若使用PCF85063 為系統(tǒng)時(shí)間提供RTC 服務(wù),則系統(tǒng)時(shí)間的初始化可以通過(guò)am_pcf85063_time_inst_init ()完成,范例程序詳見(jiàn)程序清單6.67。

程序清單6.67 啟動(dòng)系統(tǒng)時(shí)間測(cè)試應(yīng)用程序(基于PCF85063)

>>> 6.3.5 特殊功能控制接口

對(duì)于PCF85063,除典型的時(shí)鐘和鬧鐘功能外,還具有一些特殊功能,如定時(shí)器、時(shí)鐘輸出、1 字節(jié)RAM 等。這些功能由于不是通用功能,只能使用PCF85063 相應(yīng)的接口進(jìn)行操作。以讀寫1 字節(jié)RAM 為例,其相應(yīng)的接口函數(shù)詳見(jiàn)表6.13。

表6.13 讀寫RAM 接口函數(shù)(am_pcf85063.h)

1. 寫入RAM

該函數(shù)用于寫入1 字節(jié)數(shù)據(jù)到PCF85063 的RAM 中,其函數(shù)原型為:

其中,handle 為PCF85063 實(shí)例句柄,data 為寫入的單字節(jié)數(shù)據(jù)。若返回AM_OK,表示數(shù)據(jù)寫入成功,反之失敗,寫入0x55 至RAM 中的范例程序詳見(jiàn)程序清單6.68。

程序清單6.68 寫入RAM 范例程序

2. 讀取RAM

該函數(shù)讀取存于PCF85063 的單字節(jié)RAM 中的數(shù)據(jù),其函數(shù)原型為:

其中,handle 為PCF85063 實(shí)例句柄,p_data 為輸出參數(shù),用于返回讀取到的單字節(jié)數(shù)據(jù)。返回AM_OK,表示讀取成功,反之失敗,范例程序詳見(jiàn)程序清單6.69。

程序清單6.69 讀取范例程序

可以使用讀寫RAM 接口簡(jiǎn)單驗(yàn)證PCF85063 是否正常,詳見(jiàn)程序清單6.70。

程序清單6.70 讀寫RAM 數(shù)據(jù)范例程序

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 日歷芯片
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    8828

原文標(biāo)題:周立功:重用外設(shè)驅(qū)動(dòng)代碼—— RTC 實(shí)時(shí)時(shí)鐘(1)

文章出處:【微信號(hào):ZLG_zhiyuan,微信公眾號(hào):ZLG致遠(yuǎn)電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    面向通用接口的編程之溫度采集接口和鍵盤知識(shí)分享

    第七章為面向通用接口的編程,本文內(nèi)容為7.4 溫度采集接口、7.5 鍵盤。
    的頭像 發(fā)表于 11-16 03:20 ?4484次閱讀
    面向<b class='flag-5'>通用</b><b class='flag-5'>接口</b>的編程之溫度采集<b class='flag-5'>接口</b>和鍵盤知識(shí)分享

    關(guān)于ametal_led通用接口的設(shè)計(jì)技巧分享

    第八章為深入理解AMetal,本文內(nèi)容為8.1 LED 通用接口
    的頭像 發(fā)表于 11-23 07:52 ?6665次閱讀
    關(guān)于ametal_led<b class='flag-5'>通用</b><b class='flag-5'>接口</b>的設(shè)計(jì)技巧分享

    通用32位PCI接口

    請(qǐng)問(wèn)各位老師,通用32位PCI接口的信號(hào)電平 到底是3.3V還是5V ?多謝!
    發(fā)表于 09-17 09:42

    RFWD100MCU通用接口介紹

    RFW-D100主要用來(lái)為發(fā)射機(jī)和MCU(微處理單元)提供通用接口。它可為MCU和RFW-102提供透明的并行同步接口和存儲(chǔ)器接口,以及適合執(zhí)行無(wú)線通信協(xié)議的其它性能。同時(shí),也可以將輸
    發(fā)表于 04-26 07:27

    通用異步串行接口的VHDL實(shí)用化設(shè)計(jì)

    通用異步串行接口(Universal Asynchronous Receiver Transmitter,UART)在通信、控制等領(lǐng)域得到了廣泛應(yīng)用。根據(jù)UART 接口特點(diǎn)和應(yīng)用需求,以提高VHDL 設(shè)計(jì)的穩(wěn)定性和降低功耗為目標(biāo)
    發(fā)表于 09-02 11:06 ?23次下載

    通用異步串行接口的VHDL實(shí)用化設(shè)計(jì)

    通用異步串行接口(Universal Asynchronous Receiver Transmitter,UART)在通信、控制等領(lǐng)域得到了廣泛應(yīng)用。根據(jù)UART 接口特點(diǎn)和應(yīng)用需求,以提高VHDL 設(shè)計(jì)的穩(wěn)定性和降低功耗為目標(biāo)
    發(fā)表于 11-30 15:34 ?19次下載

    通用串行總線(USB)原理及接口設(shè)計(jì)

    通用串行總線(USB)原理及接口設(shè)計(jì) 通用串行總線USB (Universal SerialBus)是Intel、Microsoft等大廠商為解決計(jì)算機(jī)外設(shè)種類的日
    發(fā)表于 04-11 18:41 ?2738次閱讀
    <b class='flag-5'>通用</b>串行總線(USB)原理及<b class='flag-5'>接口</b>設(shè)計(jì)

    基于USB的通用無(wú)線傳輸接口設(shè)計(jì)

    基于USB的通用無(wú)線傳輸接口設(shè)計(jì) 介紹一種基于Philips公司的32位ARM7T[)MI—s微處理器LPC2210的USB接口設(shè)計(jì),并使用Nordic公司生產(chǎn)的單片射頻收發(fā)芯片nRF240
    發(fā)表于 09-26 17:52 ?1838次閱讀
    基于USB的<b class='flag-5'>通用</b>無(wú)線傳輸<b class='flag-5'>接口</b>設(shè)計(jì)

    組合式同步分離裝置和通用視頻接口

    組合式同步分離裝置和通用視頻接口 這個(gè)組合式同步分離裝置和通用
    發(fā)表于 10-10 15:52 ?834次閱讀
    組合式同步分離裝置和<b class='flag-5'>通用</b>視頻<b class='flag-5'>接口</b>

    RTC鬧鐘喚醒實(shí)驗(yàn)

    rtc鬧鐘 51單片機(jī)的1602液晶鬧鐘_電子/電路_工程科技_專業(yè)資料
    發(fā)表于 01-13 16:40 ?19次下載

    USB2.0協(xié)議的通用測(cè)控通信接口設(shè)計(jì)

    USB2.0協(xié)議的通用測(cè)控通信接口設(shè)計(jì)
    發(fā)表于 08-31 14:20 ?23次下載
    USB2.0協(xié)議的<b class='flag-5'>通用</b>測(cè)控通信<b class='flag-5'>接口</b>設(shè)計(jì)

    RTC實(shí)時(shí)時(shí)鐘重用外設(shè)驅(qū)動(dòng)代碼

    本節(jié)將以PCF85063 為例,詳細(xì)介紹RTC 通用接口鬧鐘通用接口等。在本節(jié)的最后兩小節(jié),將
    的頭像 發(fā)表于 12-22 14:49 ?8119次閱讀
    <b class='flag-5'>RTC</b>實(shí)時(shí)時(shí)鐘重用外設(shè)驅(qū)動(dòng)代碼

    AWorks對(duì)常見(jiàn)的外部通用設(shè)備接口應(yīng)用

    AWorks對(duì)常用的硬件設(shè)備(LED、按鍵、蜂鳴器、數(shù)碼管等等)進(jìn)行了抽象,分別為每一類設(shè)備提供了通用的操作接口,應(yīng)用程序基于通用接口編程,將使應(yīng)用程序與底層硬件徹底分離,底層硬件的更
    的頭像 發(fā)表于 05-24 09:44 ?7691次閱讀
    AWorks對(duì)常見(jiàn)的外部<b class='flag-5'>通用</b>設(shè)備<b class='flag-5'>接口</b>應(yīng)用

    淺談STM32_RTC鬧鐘

    STM32_RTC鬧鐘
    的頭像 發(fā)表于 04-08 11:14 ?1w次閱讀
    淺談STM32_<b class='flag-5'>RTC</b><b class='flag-5'>鬧鐘</b>

    CubeMX配置RTC實(shí)現(xiàn)日歷和鬧鐘實(shí)驗(yàn)

    CubeMX配置RTC實(shí)現(xiàn)日歷和鬧鐘實(shí)驗(yàn)
    的頭像 發(fā)表于 02-15 14:05 ?1984次閱讀
    CubeMX配置<b class='flag-5'>RTC</b>實(shí)現(xiàn)日歷和<b class='flag-5'>鬧鐘</b>實(shí)驗(yàn)
    远安县| 百家乐官网现实赌场| 新全讯网777| 豪享博百家乐官网的玩法技巧和规则| 百家乐官网单跳投注法| 牌9娱乐| 大发888游戏加速器| 威尼斯人娱乐城求助| 百家乐的出千手法| 网上百家乐如何打水| 柬埔寨百家乐官网的玩法技巧和规则 | 全椒县| 百家乐赌球| 如何看百家乐的玩法技巧和规则| 百家乐和的几率| 百家乐视频麻将游戏| 百家乐tt娱乐| 24山安葬吉凶择日| 百家乐官网平注法到| 都坊百家乐官网的玩法技巧和规则 | 大发888娱乐城下载最新版| 金满堂百家乐的玩法技巧和规则| 网上百家乐软件大全酷| 澳门百家乐网上赌| 百家乐游戏开发技术| 百家乐怎么玩高手| 百家乐看点打法| 百家乐榄梯打法| 太阳百家乐官网破解| 新濠百家乐官网的玩法技巧和规则 | 网络百家乐怎样出千| 百家乐娱乐真人娱乐| 上海百家乐的玩法技巧和规则| 神人百家乐赌场| 百家乐蓝盾有赢钱的吗| 百家乐有公式| 去澳门百家乐的玩法技巧和规则| 大三元百家乐的玩法技巧和规则| 赌场百家乐作弊| 百家乐3式打法微笑心法| 豪享博百家乐的玩法技巧和规则|