加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 準(zhǔn)備工作
    • e2 studio配置RTC模塊
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

瑞薩RA8系列教程 | RA8基于e2s實現(xiàn)RTC實時時鐘功能

12/02 12:10
749
閱讀需 10 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

微信公眾號?| strongerHuang

RTC:Real Time Clock,實時時鐘

以前做項目要用時鐘,都是外掛一個時鐘芯片,隨著需求的增長和技術(shù)的發(fā)展,很多MCU內(nèi)部都集成了RTC(實時時鐘)這個模塊。

本文結(jié)合e2 studio開發(fā)環(huán)境、RA8D1單片機給大家描述RTC這個模塊的使用方法。

準(zhǔn)備工作

1、下載并安裝e2 studio工具

下載地址,推薦瑞薩官方的GitHub:https://github.com/renesas/fsp/releases

我們這里基于Windows環(huán)境,安裝exe文件,基本根據(jù)提示信息一路next即可。這里不再詳述,推薦參看文章:瑞薩RA8系列教程 | 瑞薩 RA8 開發(fā)環(huán)境搭建2、準(zhǔn)備RA8D1開發(fā)板我們這里以瑞薩RA8D1單片機為例(當(dāng)然,其實RA系列單片機也類似):

e2 studio配置RTC模塊

本文基于e2 studio開發(fā)環(huán)境、RA8D1單片機,實現(xiàn)日期和時間的功能。

1、創(chuàng)建工程

我們會用到串口打印輸出,這里基于之前分享的UART串口工程進行拓展,前面的過程請參看文章:瑞薩RA8系列教程 | 基于e2s實現(xiàn)RA8串口輸出配置

這里說幾個重要的地方,首先是UART串口時鐘,需要選擇SCICLK時鐘:


再次,配置UART對應(yīng)的信息:

還有設(shè)置,菜單:項目 -> C/C++ Project Settings:

2、配置RTC模塊

為了方便大家理解,我們先以最基礎(chǔ)的方式配置RTC,然后,間隔1秒讀一次RTC并通過UART串口打印輸出。

配置RTC:Pins選項下,選擇RTC,配置模式

新建RTC模塊:我們添加RTC模塊并配置相關(guān)屬性(配置常用參數(shù),其實默認即可)。

3、添加源代碼

我們這里簡單添加一個RTC模塊(源代碼文件),如圖:

bsp_rtct.c源代碼:

#include "bsp_rtc.h"
void RTC_Init(void){   //設(shè)置初始化日期和時間   rtc_time_t set_time =   { .tm_sec = RTC_SEC_SET,  //秒     .tm_min = RTC_MIN_SET,  //分     .tm_hour = RTC_HOUR_SET,  //小時     .tm_mday = RTC_MDAY_SET,  //日(一個月中)     .tm_wday = RTC_WDAY_SET,   //星期     .tm_mon = RTC_MON_SET - 1 ,   //月份     .tm_year = RTC_YEAR_SET-1900, //年份   };   /*打開RTC*/   R_RTC_Open (g_rtc.p_ctrl, g_rtc.p_cfg);   /*設(shè)置時鐘源*/   R_RTC_ClockSourceSet (g_rtc.p_ctrl);   /* 設(shè)置日期時間 */   R_RTC_CalendarTimeSet (g_rtc.p_ctrl, &set_time);}

bsp_rtc.h頭代碼:

#ifndef BSP_RTC_H#define BSP_RTC_H
#include "hal_data.h"
/**********日期宏定義**********/#define RTC_YEAR_SET 2024       //年#define RTC_MON_SET 10           //月#define RTC_MDAY_SET 31          //日/*換算星期*/#define RTC_WDAY_SET (RTC_YEAR_SET-2000                   + ((RTC_YEAR_SET-2000)/4)                   - 35 + (26*(RTC_MON_SET+1))/10                   + RTC_MDAY_SET -1 )%7
/**********時間宏定義**********/#define RTC_HOUR_SET 23          //時#define RTC_MIN_SET 59           //分#define RTC_SEC_SET 50           //秒
void RTC_Init(void);
#endif

這里我們只簡單的配置(初始化)了日期和時間,然后在應(yīng)用程序中,間隔1秒讀取并打印輸出。

void hal_entry(void){    static rtc_time_t get_time;
    Debug_UART3_Init(); // SCI3 UART 調(diào)試串口初始化    RTC_Init();         //初始化RTC
    while(1)    {        R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_10_PIN_01, BSP_IO_LEVEL_LOW);        R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS); // 延時500ms
        R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_10_PIN_01, BSP_IO_LEVEL_HIGH);        R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS); // 延時500ms
        /*獲取當(dāng)前時間*/       R_RTC_CalendarTimeGet (g_rtc.p_ctrl, &get_time);
       /*打印當(dāng)前時間*/       printf("RTC:%d-%d-%d-%d:%d:%drn", get_time.tm_year + 1900, get_time.tm_mon + 1, get_time.tm_mday,                get_time.tm_hour, get_time.tm_min, get_time.tm_sec);
????}}

4、演示效果

這里通過間隔1秒主動讀取RTC,并打印輸出顯示,最后效果:

通過以上配置其實你會發(fā)現(xiàn)很簡單,還有一種通過RTC(1秒)中斷打印輸出,這樣就不需要主動讀取了。

方法其實很簡單,配置中斷:

然后在代碼中增加 rtc_callback 這個中斷回調(diào)函數(shù)。

void rtc_callback(rtc_callback_args_t *p_args){      static rtc_time_t get_time;
      switch (p_args->event)      {         /*若是周期中斷,則打印日期時間*/         case RTC_EVENT_PERIODIC_IRQ:
            /*獲取當(dāng)前時間*/            R_RTC_CalendarTimeGet (g_rtc.p_ctrl, &get_time);
            /*打印當(dāng)前時間*/            printf("RTC:%d-%d-%d-%d:%d:%drn", get_time.tm_year + 1900, get_time.tm_mon + 1, get_time.tm_mday,                get_time.tm_hour, get_time.tm_min, get_time.tm_sec);            break;         default:            break;      }}

實現(xiàn)效果一樣,這樣就可以不需要應(yīng)用程序主動讀取了。

好了,本文就分享到這里,希望對你們有所幫助。

瑞薩電子

瑞薩電子

(RENESAS)于2003年4月1日—由日立制作所半導(dǎo)體部門和三菱電機半導(dǎo)體部門合并成立。RENESAS結(jié)合了日立與三菱在半導(dǎo)體領(lǐng)域方面的先進技術(shù)和豐富經(jīng)驗,是無線網(wǎng)絡(luò)、汽車、消費與工業(yè)市場設(shè)計制造嵌入式半導(dǎo)體的全球領(lǐng)先供應(yīng)商。創(chuàng)立日期2003年4月1日公司法人董事長&CEO伊藤達業(yè)務(wù)范圍單片機邏輯模擬等的系統(tǒng)LSI、分立半導(dǎo)體元件、SRAM等的存儲器開發(fā)、設(shè)計、制造、銷售、服務(wù)的提供。集團成員44家公司(日本20家,日本以外24家)年度銷售額2006財年(截止至2007年3月):9526億日元(約83億美元)從業(yè)人員:26000人(全世界20個國家、43家公司)瑞薩科技是世界十大半導(dǎo)體芯片供應(yīng)商之一,在很多諸如移動通信、汽車電子和PC/AV 等領(lǐng)域獲得了全球最高市場份額。瑞薩集成電路設(shè)計(北京)有限公司蘇州分公司(RDB-SU)是瑞薩科技全資子公司,2004年1月成立以來,現(xiàn)已擁有150多名優(yōu)秀工程師,承擔(dān)著家電和汽車電子領(lǐng)域MCU的一系列設(shè)計工作,并在2006年4月開始開發(fā)面向中國市場的MCU。

(RENESAS)于2003年4月1日—由日立制作所半導(dǎo)體部門和三菱電機半導(dǎo)體部門合并成立。RENESAS結(jié)合了日立與三菱在半導(dǎo)體領(lǐng)域方面的先進技術(shù)和豐富經(jīng)驗,是無線網(wǎng)絡(luò)、汽車、消費與工業(yè)市場設(shè)計制造嵌入式半導(dǎo)體的全球領(lǐng)先供應(yīng)商。創(chuàng)立日期2003年4月1日公司法人董事長&CEO伊藤達業(yè)務(wù)范圍單片機邏輯模擬等的系統(tǒng)LSI、分立半導(dǎo)體元件、SRAM等的存儲器開發(fā)、設(shè)計、制造、銷售、服務(wù)的提供。集團成員44家公司(日本20家,日本以外24家)年度銷售額2006財年(截止至2007年3月):9526億日元(約83億美元)從業(yè)人員:26000人(全世界20個國家、43家公司)瑞薩科技是世界十大半導(dǎo)體芯片供應(yīng)商之一,在很多諸如移動通信、汽車電子和PC/AV 等領(lǐng)域獲得了全球最高市場份額。瑞薩集成電路設(shè)計(北京)有限公司蘇州分公司(RDB-SU)是瑞薩科技全資子公司,2004年1月成立以來,現(xiàn)已擁有150多名優(yōu)秀工程師,承擔(dān)著家電和汽車電子領(lǐng)域MCU的一系列設(shè)計工作,并在2006年4月開始開發(fā)面向中國市場的MCU。收起

查看更多

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

作者黃工,從事嵌入式軟件開發(fā)工作8年有余,高級嵌入式軟件工程師,業(yè)余維護公眾號『strongerHuang』,分享嵌入式軟硬件、單片機、物聯(lián)網(wǎng)等內(nèi)容。