Hallo,
beim Konfigurieren eines Timers, der im Sekundentakt eine LED blinken
soll habe ich festgestellt, dass entgegen dem Handbuch bei mir eine
andere Startkonfiguration der Clocks vorliegt. Der µC ist ein
STZM32F407VGT6
Es ist die PLL aktiviert und auch HSE ist aktiviert. Die PLL ist als
Systemclock zugewiesen. Im RCC->CFGR Register kann auch 0b10 abgelesen
werden bei den Bits, die angeben welche Systemclock ausgewählt ist.
[3:2]
Ich kann die Bits 0:1 in RCC->CFGR löschen und ich habe meine korrekte
16MhZ HSI clk.
Warum ist das so? Es ist das STMF4 Discoveryboard, nur ein paar Zeilen
code, direkt auf Registerebene. Habe ich etwas übersehen?
Ich lasse mir die Bitkonfigurationen auf der grünen und orangenen LED
des Boards ausgeben.
1 | int main(void)
|
2 | {
|
3 |
|
4 | //RCC->CFGR &= ~0b11; //HSI ausählen
|
5 | //while(((RCC->CFGR) & (0b11<<2))); //warten bis bereit
|
6 |
|
7 | RCC->AHB1ENR |= (1<<3); //GPIOD CLK
|
8 |
|
9 | GPIOD->MODER |= (0b01 << 2*12); //LEDs Discoveryboard aktivieren (grün)
|
10 | GPIOD->MODER |= (0b01 << 2*13); //LEDs Discoveryboard aktivieren (orange)
|
11 |
|
12 | //GPIOD->ODR |= (RCC->CFGR & (0b11 << 2)) << 10; //Systemclock auswahl
|
13 | GPIOD->ODR |= (RCC->CR & (1<<24)) >> 12; //PLL aktiv?
|
14 |
|
15 | while(1);
|
16 | }
|