CooCox STM32F4 Discovery SysClk einstellen

OP #3161401
Lesenswert?
• ▲
▼
Ich habe mir jetzt nun endlich CoIde installiert. Wo muss ich 
einstellen, dass das Board auf vollen 168 MHz läuft? Ich hab schon bei 
der stm32f4xx.h
1
#if !defined  (HSE_VALUE) 
2
  #define HSE_VALUE    ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
3
#endif /* HSE_VALUE */
1
#if !defined  (HSE_VALUE) 
2
  #define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
3
#endif /* HSE_VALUE */
 umgestellt. Läuft der jetzt schon auf 168 MHz oder wie?
Gast #3161410
Lesenswert?
• ▲
▼
Das Board hat LEDs. Du kannst ja einfach mal eine LED im 
Drei-Sekundentakt ein- und ausschalten und auf die Uhr schauen dann 
solltest du sehen ob er mit 168 MHz oder deutlich weniger wie bei der 
falschen Einstellung blinkt.
Gast #3161425
Lesenswert?
• ▲
▼
1. Da du ja scheinbar in C programmieren willst, ist die 
Wahrscheinlichkeit hoch das eine delay_ms(xxxx); zur Verfügung steht.
2. Falls nicht, kann man auch "nop" Befehle in einer entsprechend 
angepassten Schleife ausführen. Siehe auch Assemblertutorial auf diesen 
Seiten.
3. Teste doch einfach den Timer nach ändern dieser Einstellung. 
Vielleicht läuft er ja schon korrekt.
4. .... der Kreativität sind keine Grenzen gesetzt .....
#3162286
Lesenswert?
• ▲
▼
@Peter K,

-das File "system_stm32f4xx.c" muss auch noch angepasst werden
und im Main muss einmal diese Funktion aufgerufen werden
1
SystemInit();

um zu testen ob alles richtig (auf 168MHz) eingestellt ist,
kannst du das hier benutzen :
1
#include "stm32f4xx.h"
2
#include "stm32f4xx_rcc.h"
3
#include "stm32f4xx_conf.h"
4

5

6
//-------------------------------
7
// return wert  0 => alles ok
8
// return wert >0 => fehler
9
//-------------------------------
10
uint8_t test_Clock(void)
11
{
12
  uint8_t ret_wert=0;
13
  RCC_ClocksTypeDef RCC_Clocks;
14
  uint8_t clk_source;
15
  uint32_t clk_frq;
16

17
  // Clock-Quelle auslesen
18
  clk_source=RCC_GetSYSCLKSource();
19
  if(clk_source!=8) return(1); // Source steht nicht auf PLL
20

21
  // Clock-Frequenzen auslesen
22
  RCC_GetClocksFreq(&RCC_Clocks);
23
  clk_frq = RCC_Clocks.HCLK_Frequency; // muss 168MHz sein
24
  if(clk_frq!=168000000) return(2);
25
  clk_frq = RCC_Clocks.PCLK1_Frequency; // muss 42MHz sein
26
  if(clk_frq!=42000000) return(3);
27
  clk_frq = RCC_Clocks.PCLK2_Frequency; // muss 84MHz sein
28
  if(clk_frq!=84000000) return(4);
29
  clk_frq = RCC_Clocks.SYSCLK_Frequency; // muss 168MHz sein
30
  if(clk_frq!=168000000) return(5);
31

32
  return(ret_wert);
33
}

Gruss Uwe

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.