以前都是使用RTC芯片来实现实时时钟功能,GD32E231C8T6片上集成了RTC外设,这次实验就来试试。先看看RTC外设的简介:
从图中可以看到RTC外设的功能比较强大,同时对于RTC时钟的选择也是比较灵活,由于开发板上已经安装了32768Hz晶振,本次实验亦使用了“LXTAL”作为RTC时钟源。下面是实验的一些代码片段,只是完成了“读秒”并通过USART发送至PC端。
- void rtc_config(void)
- {
- rcu_periph_clock_enable(RCU_PMU);
- pmu_backup_write_enable();
-
- rcu_osci_on(RCU_LXTAL); //使能32768 Hz外部低速晶振(LXTAL)
- rcu_osci_stab_wait(RCU_LXTAL); //等待晶振稳定
- rcu_rtc_clock_config(RCU_RTCSRC_LXTAL); //配置RTC时钟源选择
- rcu_periph_clock_enable(RCU_RTC);
- rtc_register_sync_wait();
- }
- int main(void)
- {
- static uint8_t second;
- systick_config();
- USART0_Config();
- rtc_config();
- printf("GD32E231C_START USART0 RTC\r\n");
- while(1)
- {
- rtc_current_time_get(&rtc_calendar);
-
- second = ((rtc_calendar.rtc_second/16)*10)+((rtc_calendar.rtc_second)%16);
- printf("rtc_second %d \r\n",second);
- delay_1ms(1000);
- }
- }
下面是串口收到的数据截图:
USART0_RTC.rar
(383.61 KB, 下载次数: 23)
|