Hallo,
ich versuch mich gerade an der RTC vom STM32.
Wenn man mal von den Interrupts absieht, funktioniert auch alles wie es
soll,
bloß egal was ich mache es wird einfach kein Interrupt ausgelöst.
So sieht meine Initialisierung aus:
1 | RCC_APB1ENR |= (1<<RCC_APB1ENR_BKPEN) | (1<<RCC_APB1ENR_PWREN);
|
2 |
|
3 | PWR_CR |= (1<<PWR_CR_DBP);
|
4 |
|
5 | RCC_BDCR |= (1<<RCC_BDCR_LSEON);
|
6 | while(!(RCC_BDCR & (1<<RCC_BDCR_LSERDY)));
|
7 |
|
8 | RCC_BDCR |= (1<<RCC_BDCR_RTCSEL0);
|
9 | RCC_BDCR |= (1<<RCC_BDCR_RTCEN);
|
10 |
|
11 | while(!(RTC_CRL & (1<<RTC_CRL_RTOFF)));
|
12 |
|
13 | RTC_CRL |= (1<<RTC_CRL_CNF);
|
14 |
|
15 | RTC_PRLH = 0x0000;
|
16 | RTC_PRLL = 0x7FFF;
|
17 |
|
18 | RTC_CNTH = 0;
|
19 | RTC_CNTL = 0;
|
20 |
|
21 | RTC_CRH |= (1<<RTC_CRH_SECIE);
|
22 |
|
23 | RTC_CRL &= ~(1<<RTC_CRL_CNF);
|
24 | while(!(RTC_CRL & (1<<RTC_CRL_RTOFF)));
|
und die ISR:
1 | if(RTC_CRL & (1<<RTC_CRL_ALRF))
|
2 | {
|
3 | RTC_CRL &= ~(1<<RTC_CRL_SECF);
|
4 |
|
5 | if(GPIOB_ODR & GPIO_PIN(5))
|
6 | GPIOB_BRR |= GPIO_PIN(5);
|
7 | else
|
8 | GPIOB_BSRR |= GPIO_PIN(5);
|
9 |
|
10 | while(!(RTC_CRL & (1<<RTC_CRL_RSF)));
|
11 | }
|
Kann mir bitte jemand sagen, was ich Falsch mache?