Ich rufe diesen alten Thread wieder ins Leben, da ich eine Frage habe,
die die von Thomas ergänzen könnte. Also passt es ganz genau zu diesem
Thread.
Ich habe nicht so ganz kapiert, wie man den RCC_APBxPeriph... richtig
einstellt. Internet liefert unzählige Tutorial, in dem wiederholt wird,
dass GPIO, SPI, UART usw. mit einem Clock initialisiert werden.
Ok, wie kann ich das Diagramm im Anhang (aus dem Datenblatt des Mikros:
STM32F407) richtig interpretieren?
Aus dem Diagramm sieht man eindeutig, dass GPIOA durch den AHB1 Bus
gesteuert wird.
So schreibe ich in mein Code:
1 | RCC_AHB1PeriphClockCmd(GPIOA, ENABLE);
|
und funktioniert es auch.
Das Problem sind bespielsweise die Module, die an dem APB2 verbunden
sind.
Diese würde ich mit dem Befehl:
1 | RCC_APB2PeriphClockCmd(UART1, ENABLE);
|
initialisieren. Doch der im grau markierte Bus AHB scheint mit der UART1
in Verbindung auch zu sein.
Tatsächlich findet man Beispiele, in denen die obige Zeile mit dem
folgenden Code ergänzt wird:
1 | RCC_AHB1PeriphClockCmd(UART1, ENABLE);
|
so verstehe ich nicht so ganz, ob ich die Module, die mit dem Bus APB2
auch mit dem AHB1/2 initialisiert werden müssen oder nicht.
Danke
Gruß
PS: In diesem Fall war die UART Schnittstelle nur ein Beispiel. Ich
finde solche Konfigurationen für SPI, I2C usw.