加入星計劃,您可以享受以下權益:

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

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

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

微信公眾號?| strongerHuang

RTC:Real Time Clock,實時時鐘

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

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

準備工作

1、下載并安裝e2 studio工具

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

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

e2 studio配置RTC模塊

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

1、創(chuàng)建工程

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

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


再次,配置UART對應的信息:

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

2、配置RTC模塊

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

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

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

3、添加源代碼

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

bsp_rtct.c源代碼:

#include "bsp_rtc.h"
void RTC_Init(void){   //設置初始化日期和時間   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);   /*設置時鐘源*/   R_RTC_ClockSourceSet (g_rtc.p_ctrl);   /* 設置日期時間 */   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

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

void hal_entry(void){    static rtc_time_t get_time;
    Debug_UART3_Init(); // SCI3 UART 調試串口初始化    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
        /*獲取當前時間*/       R_RTC_CalendarTimeGet (g_rtc.p_ctrl, &get_time);
       /*打印當前時間*/       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 這個中斷回調函數(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:
            /*獲取當前時間*/            R_RTC_CalendarTimeGet (g_rtc.p_ctrl, &get_time);
            /*打印當前時間*/            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)效果一樣,這樣就可以不需要應用程序主動讀取了。

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

瑞薩電子

瑞薩電子

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

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

查看更多

相關推薦

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

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