Ich glaube, du würfelst in deiner Notation etwas durcheinander.
Du hast folgendes Define gemacht:
1 | #define RTC_ILR_RTCCIF 0x01 //ILR Register, Bit für pending IRQs der Uhr
|
Dann verwendest du dieses Define aber für ein Shift-Befehl.
Wenn du nun aber (1 << RTC_ILR_RTCCIF) schreibst, dann kommt doch 0x02
raus!? Das willst du aber eigentlich nicht!
Noch ein anderes "Problem". Die Schreibweise RTC_ILR |= xxx bzw. RTC_ILR
&= xxx ist unnötig, da Bits in dem Register nur gelöscht werden, wenn
man 1en (Einsen) schreibt. In deiner ISR solltest du also einfach
schreiben:
1 | RTC_ILR = RTC_ILR_RTCCIF;
|
Zur Sicherheit solltest du evtl. in der ISR alle anliegenden Interrupts
löschen, d.h. folgendes schreiben:
1 | RTC_ILR = (RTC_ILR_RTCCIF | RTC_ILR_RTCALF | RTC_ILR_RTSSF);
|
Der schuldige dürfte bei dir wohl der Sub-Second Interrupt sein:
füge mal folgendes in deine Init_RTC_ISR ein:
Damit wird der Sub-Second Interrupt deaktiviert.