IAR derleyicisini kullanarak STM32L152RB Discovery kartında Gerçek Zaman Saati uygulaıyorum. Ben HSI üzerinde Saat yapılandırmasını uygulamış ve PLL ben 4. Kod bunu çoğaldı kullanarak ->Sadece LSI/LSE/HSE'de Stm32L'de RTC'nin saat yapılandırması?
/* Enable HSI Clock */
RCC_HSICmd(ENABLE);
/*!< Wait till HSI is ready */
while (RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);
RCC_PLLConfig(RCC_PLLSource_HSI,RCC_PLLMul_4,RCC_PLLDiv_2);
RCC_PLLCmd(ENABLE);
while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
/* Set HSI as sys clock*/
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
Ben RTC Saat kaynağı olarak ikincil saat LSE ayarlamak zorunda Gerçek Zamanlı saat yapılandırılırken olduğunu sorun Benim durumumda kaynak saatim HSI. PWR denetleyicisini etkinleştiren, rtc etki alanı erişimini, rtc saat kaynağını, rtc_init(), sonra da ayarlamayı ve aramayı etkinleştiren adımların geri kalanı, bildiğim kadarıyla iyidir. İşte Denedim koddur - alırım>
/* Enable RTC clocks and rtc related functions */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
PWR_RTCAccessCmd(ENABLE);
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); //This part I think is wrong
RCC_RTCCLKCmd(ENABLE);
RTC_InitTypeStructure.RTC_HourFormat=RTC_HourFormat_12;
RTC_InitTypeStructure.RTC_AsynchPrediv=0x7F;
RTC_InitTypeStructure.RTC_SynchPrediv=0xFF;
RTC_Init(&RTC_InitTypeStructure);
/* End RTC Clock */
RTC_TimeTypeTime.RTC_Hours=18;
RTC_TimeTypeTime.RTC_Minutes=11;
RTC_TimeTypeTime.RTC_Seconds=4;
RTC_TimeTypeTime.RTC_H12=RTC_H12_PM;
RTC_SetTime(RTC_Format_BIN, &RTC_TimeTypeTime);
while(1){
f_SleepMs(10);
RTC_GetTime(RTC_Format_BIN, &RTC_TimeTypeTime);
RELEASE_MSG("\r%d:%d:%d",RTC_TimeTypeTime.RTC_Hours,RTC_TimeTypeTime.RTC_Minutes,RTC_TimeTypeTime.RTC_Seconds);
}
Çıktı 0:0:0
bunu çözüldü