STM32F4 Discoveryboard: Warum PLL aktiv startup

Gast #5145196
Lesenswert?

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
}
Gast #5145210
Lesenswert?

Jim M. schrieb:
> Ja, die haben IIRC noch irgendwo eine SystemInit() Funktion die vor
> main() ausgeführt wird und z.B. Clocks aufsetzt.

Richtig. Ich habe gezögert das zu benennen da es vermutlich
von der IDE (die einem evtl etwas vorkonfiguriert) abhängt
wie der Startup Code ausgelegt ist, ob die SystemInit() Funktion
bereits im Reset-Handler vor der main() aufgerufen wird.
Gast #5145268
Lesenswert?

Schau dir mal dein Projekt an. Dort wird vermutlich
irgendwo <startup_stm32f4xx.S> eingebunden sein.
Darin findet sich der <Reset_Handler:> der nach ein
paar Zeilen zum Aufruf von <SystemInit()> in der Datei
system_stm32f4xx.c in der bereits Clocks und anderes
gesetzt wird.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren