- #include "hal_data.h"
 
- #include "oled.h"
 
- FSP_CPP_HEADER
 
- void R_BSP_WarmStart(bsp_warm_start_event_t event);
 
- FSP_CPP_FOOTER
 
 
- i2c_master_event_t i2c_event = I2C_MASTER_EVENT_ABORTED;
 
- void sci_i2c_master_callback(i2c_master_callback_args_t *p_args)
 
- {
 
-     i2c_event = I2C_MASTER_EVENT_ABORTED;
 
-     if (NULL != p_args)
 
-     {
 
-         /* capture callback event for validating the i2c transfer event*/
 
-         i2c_event = p_args->event;
 
-     }
 
- }
 
 
- fsp_err_t err = FSP_SUCCESS;
 
- int  timeout_ms = 100;
 
 
- /* rtc_time_t is an alias for the C Standard time.h struct 'tm' */
 
- rtc_time_t set_time =
 
- {
 
-     .tm_sec  = 8,      /* 秒,范围从 0 到 59 */
 
-     .tm_min  = 8,      /* 分,范围从 0 到 59 */
 
-     .tm_hour = 12,      /* 小时,范围从 0 到 23*/
 
-     .tm_mday = 30,       /* 一月中的第几天,范围从 1 到 31*/
 
-     .tm_mon  = 06,      /* 月份,范围从 0 到 11*/
 
-     .tm_year = 122,     /* 自 1900 起的年数,2021为121*/
 
- //    .tm_wday = 5,       /* 一周中的第几天,范围从 0 到 6*/
 
- //    .tm_yday=0,         /* 一年中的第几天,范围从 0 到 365*/
 
- //    .tm_isdst=0;        /* 夏令时*/
 
- };
 
 
- volatile bool rtc_flag = 0;//RTC延时1s标志位
 
- /* Callback function */
 
- void rtc_callback(rtc_callback_args_t *p_args)
 
- {
 
-     /* TODO: add your own code here */
 
-     if(p_args->event == RTC_EVENT_PERIODIC_IRQ)
 
-         rtc_flag=1;
 
- }
 
 
- void hal_entry(void)
 
- {
 
-     /* TODO: add your own code here */
 
 
-     /* Initialize the RTC module*/
 
-        err = R_RTC_Open(&g_rtc0_ctrl, &g_rtc0_cfg);
 
-        /* Handle any errors. This function should be defined by the user. */
 
-        assert(FSP_SUCCESS == err);
 
-        /* R_RTC_CalendarTimeSet must be called at least once to start the RTC */
 
-        R_RTC_CalendarTimeSet(&g_rtc0_ctrl, &set_time);
 
-        /* Set the periodic interrupt rate to 1 second */
 
-        R_RTC_PeriodicIrqRateSet(&g_rtc0_ctrl, RTC_PERIODIC_IRQ_SELECT_1_SECOND);
 
 
-        uint8_t rtc_second= 8;      //秒
 
-        uint8_t rtc_minute =8;      //分
 
-        uint8_t rtc_hour =12;         //时
 
-        uint8_t rtc_day =30;          //日
 
-        uint8_t rtc_month =06;      //月
 
-        uint16_t rtc_year =122;        //年
 
-        uint8_t rtc_week =0;        //周
 
-        rtc_time_t get_time;
 
 
-         /* IIC初始化*/
 
-         err = R_SCI_I2C_Open(&g_i2c0_ctrl, &g_i2c0_cfg);
 
-         assert(FSP_SUCCESS == err);
 
-         WriteCmd();//OLED初始化
 
-         OLED_Clear();//清屏
 
 
-         OLED_ShowString(16,1,"RA",16);
 
-         OLED_ShowCHinese(32,1,3);//生
 
-         OLED_ShowCHinese(48,1,4);//态
 
-         OLED_ShowCHinese(64,1,5);//工
 
-         OLED_ShowCHinese(80,1,6);//作
 
-         OLED_ShowCHinese(96,1,7);//室
 
-         OLED_ShowCHinese(40,5,0);//年
 
-         OLED_ShowCHinese(72,5,1);//月
 
-         OLED_ShowCHinese(104,5,2);//日
 
-         OLED_ShowString(32,3,"11:11:11",16);
 
 
-         while(1)
 
-             {
 
-                 if(rtc_flag)
 
-                 {
 
-                     R_RTC_CalendarTimeGet(&g_rtc0_ctrl, &get_time);//获取RTC计数时间
 
-                     rtc_flag=0;
 
-                     rtc_second=get_time.tm_sec;//秒
 
-                     rtc_minute=get_time.tm_min;//分
 
-                     rtc_hour=get_time.tm_hour;//时
 
-                     rtc_day=get_time.tm_mday;//日
 
-                     rtc_month=get_time.tm_mon;//月
 
-                     rtc_year=get_time.tm_year; //年
 
-                     rtc_week=get_time.tm_wday;//周
 
-                 }
 
-                     OLED_ShowNum(8,5,rtc_year+1900,4,16);//年
 
-                     OLED_ShowNum(56,5,rtc_month,2,16);//月
 
-                     OLED_ShowNum(88,5,rtc_day,2,16);//日
 
-                     OLED_ShowNum(32,3,rtc_hour,2,16);//时
 
-                     OLED_ShowNum(56,3,rtc_minute,2,16);//分
 
-                     OLED_ShowNum(80,3,rtc_second,2,16);//秒
 
 
-             }
 
 
- #if BSP_TZ_SECURE_BUILD
 
-     /* Enter non-secure code */
 
-     R_BSP_NonSecureEnter();
 
- #endif
 
- }
 
- /*******************************************************************************************************************//**
 
-  * This function is called at various points during the startup process.  This implementation uses the event that is
 
-  * called right before main() to set up the pins.
 
-  *
 
-  * @param[in]  event    Where at in the start up process the code is currently at
 
-  **********************************************************************************************************************/
 
- void R_BSP_WarmStart(bsp_warm_start_event_t event)
 
- {
 
-     if (BSP_WARM_START_RESET == event)
 
-     {
 
- #if BSP_FEATURE_FLASH_LP_VERSION != 0
 
 
-         /* Enable reading from data flash. */
 
-         R_FACI_LP->DFLCTL = 1U;
 
 
-         /* Would normally have to wait tDSTOP(6us) for data flash recovery. Placing the enable here, before clock and
 
-          * C runtime initialization, should negate the need for a delay since the initialization will typically take more than 6us. */
 
- #endif
 
-     }
 
 
-     if (BSP_WARM_START_POST_C == event)
 
-     {
 
-         /* C runtime environment and system clocks are setup. */
 
 
-         /* Configure pins. */
 
-         R_IOPORT_Open (&g_ioport_ctrl, g_ioport.p_cfg);
 
-     }
 
- }
 
 
- #if BSP_TZ_SECURE_BUILD
 
 
- BSP_CMSE_NONSECURE_ENTRY void template_nonsecure_callable ();
 
 
- /* Trustzone Secure Projects require at least one nonsecure callable function in order to build (Remove this if it is not required to build). */
 
- BSP_CMSE_NONSECURE_ENTRY void template_nonsecure_callable ()
 
- {
 
 
- }
 
- #endif
 
编译成功提示:
运行视频如附件所示。
特别注意:
VBAT需要接VCC哦。否则时间不动哦。