新闻中心

EEPW首页>嵌入式系统>设计应用> STM32L151内部RTC时钟

STM32L151内部RTC时钟

作者: 时间:2016-11-13 来源:网络 收藏
STM32L151系列CPU内置低功耗RTC日历。RTC时钟源可以是LSE、LSI、HSE。为了降低功耗,预分频器被分成两个预分频器。一个7为的异步预分频器,一个13位同步预分频器。

Fclk=32768/[(PREDIV_S+1)*(PREDIV_A+1)]

本文引用地址://m.amcfsurvey.com/article/201611/316443.htm

void RTC_Config(void)

{

RTC_InitTypeDef RTC_InitStruct;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);

PWR_RTCAccessCmd(ENABLE);

#if defined RTC_CLOCK_SOURCE_LSI

RTC_LSICmd(ENABLE);

while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET);

RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);

#elif defined RTC_CLOCK_SOURCE_LSE

RTC_LSEConfig(RCC_LSE_ON);

while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET);

RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);

#else #error Please select the RTC Clock Source inside the main.c file

#endif

RCC_RTCCLKCmd(ENABLE);

RTC_WaitForSynchro();

RTC_InitStruct.RTC_HourFormat = RTC_HourFormat_24;

RTC_InitStruct.RTC_AsynchPrediv = 0x7F;

RTC_InitStruct.RTC_SynchPrediv = 0xFF;

RTC_Init(&RTC_InitStruct);

}

void RTC_TimeRegulate(void)

{

RTC_TimeTypeDef RTC_TimeStruct;

RTC_DateTypeDef RTC_DateStruct;

RTC_TimeStruct.RTC_Hours = 23;

RTC_TimeStruct.RTC_Minutes = 59;

RTC_TimeStruct.RTC_Seconds = 59;

RTC_TimeStruct.RTC_H12 = RTC_H12_AM;

RTC_SetTime(RTC_Format_BIN,&RTC_TImeStruct);

RTC_DateStruct.RTC_Year = 12;

RTC_DateStruct.RTC_Date = 31;

RTC_DateStruct.RTC_Month = 12;

RTC_DateStruct.RTC_WeekDay = 1;

RTC_SetDate(RTC_Format_BIN,&RTC_DateStruct);

}

void RTC_TimeShow(unsigned char *pDate)

{

RTC_TimeTypeDef RTC_TimeStruct;

RTC_DateTypeDef RTC_DateStruct;

RTC_GetTime(RTC_Format_BIN,&RTC_TImeStruct);

RTC_GetDate(RTC_Format_BIN,&RTC_DateStruct);

pDate[0] = RTC_TimeStruct.RTC_Hours;

pDate[1] = RTC_TimeStruct.RTC_Minutes;

pDate[2] = RTC_TimeStruct.RTC_Seconds ;

pDate[3] = RTC_DateStruct.RTC_Year;

pDate[4] = RTC_DateStruct.RTC_Date;

pDate[5] = RTC_DateStruct.RTC_Month ;

pDate[6] = RTC_DateStruct.RTC_WeekDay ;

}



关键词:STM32L151内部RTC时

评论


技术专区

关闭