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

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