Hallo, ich benötige ein wachsames Auge, welches mir einen eventuellen
Fehler bei der Inbetriebnahme der RTC bei einem STM32F4 aufzeigt.
Init der RTC
1 | void rtc_init(void){
|
2 | RTC_InitTypeDef RTC_InitStructure;
|
3 |
|
4 | RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
|
5 |
|
6 | PWR_BackupAccessCmd(ENABLE);
|
7 |
|
8 | RCC_BackupResetCmd(ENABLE);
|
9 | RCC_BackupResetCmd(DISABLE);
|
10 |
|
11 | RCC_LSICmd(ENABLE);
|
12 |
|
13 | while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET) { }
|
14 |
|
15 | RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);
|
16 |
|
17 | RCC_RTCCLKCmd(ENABLE);
|
18 |
|
19 | RTC_WaitForSynchro();
|
20 |
|
21 | RTC_InitStructure.RTC_AsynchPrediv = 0x7F;
|
22 | RTC_InitStructure.RTC_SynchPrediv = 0xFF;
|
23 | RTC_InitStructure.RTC_HourFormat = RTC_HourFormat_24;
|
24 | RTC_Init(&RTC_InitStructure);
|
25 |
|
26 | }
|
Einstellen der Uhrzeit:
1 | ur_sh_set_rtc(20,15,12);
|
2 |
|
3 | void set_rtc(int Hour,int Min,int Sec){
|
4 | RTC_TimeTypeDef RTC_TimeStructure;
|
5 |
|
6 | RTC_TimeStructure.RTC_Hours = Hour;
|
7 | RTC_TimeStructure.RTC_Minutes = Min;
|
8 | RTC_TimeStructure.RTC_Seconds = Sec;
|
9 | RTC_SetTime(RTC_Format_BCD, &RTC_TimeStructure);
|
Auslesen der Uhrzeit:
1 | int TimeStamp[3]={0,0,0};
|
2 |
|
3 | int get_rtc(){
|
4 | RTC_TimeTypeDef RTC_TimeStructure;
|
5 |
|
6 | TimeStamp[0] = RTC_TimeStructure.RTC_Hours;
|
7 | TimeStamp[1] = RTC_TimeStructure.RTC_Minutes;
|
8 | TimeStamp[2] = RTC_TimeStructure.RTC_Seconds;
|
9 |
|
10 | return *TimeStamp;
|
11 | }
|
Leider wird beim Auslesen unter TimeStamp[0] nur der Wert 0x0000001
hinterlegt, alle anderen Werte sind 0x0000000
Weiss momentan nicht weiter und hoffe auf einen Tipp Eurerseits.
Danke!