以前都是使用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)
|