RTC的时钟可以选择四种时钟HSE/HIS/LSE/LSI,如下图所示。相比STM32的RTC需要相关软件配合才能RTC功能。STM8L更加灵活,相关寄存器就有33个,而且是硬件实现的,缺点是没有独立的RTC供电的电源。
实时时钟的主要代码:
void main(void)
{
u8 temp=0;
/* Infinite loop */
/* Select LSE (32.768 KHz) as RTC clock source */
CLK_RTCClockConfig(CLK_RTCCLKSource_LSE, CLK_RTCCLKDiv_1);
CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE);
LCD_GLASS_Init();
Calendar_Init();
while (1)
{
RTC_GetTime(RTC_Format_BIN, &RTC_TimeStr);
temp=RTC_TimeStr.RTC_Seconds;
while(temp==RTC_TimeStr.RTC_Seconds)//查询等待1s
{
RTC_GetTime(RTC_Format_BIN, &RTC_TimeStr);
}
Time_Show();
}
}