Hi, ich bin gerade dabei eine RTC auf einem STM32F103C8 in Betrieb zu
nehmen. Habe den Beispielcode aus der Periph-Lib verwendet, soweit
funktioniert fast alles, z.B. Auslesen, 1s-IRQ, etc.
Nur, wenn ich jetzt versuche den Wert im laufenden Betrieb zu setzen
bekomme ich einen Hänger. Verwendet habe ich diese Funktion aus dem
Example, hier mit Failsafe auf 0x0:
1 | void Time_Adjust(uint32_t timestamp)
|
2 | {
|
3 | /* Wait until last write operation on RTC registers has finished */
|
4 | RTC_WaitForLastTask();
|
5 | /* Change the current time */
|
6 | //RTC_SetCounter(timestamp);
|
7 | RTC_SetCounter(0x0);
|
8 | /* Wait until last write operation on RTC registers has finished */
|
9 | RTC_WaitForLastTask();
|
10 | }
|
Im Debugger sehe ich das er am letzten Funktionsaufruf hängen bleibt:
1 | void RTC_WaitForLastTask(void)
|
2 | {
|
3 | /* Loop until RTOFF flag is set */
|
4 | while ((RTC->CRL & RTC_FLAG_RTOFF) == (uint16_t)RESET)
|
5 | {
|
6 | }
|
7 | }
|
Und zwar nur und jedesmal, wenn ich davor einen SetCounter-Aufruf hatte.
Muss ich noch irgendwas beachten?