Forum: Mikrocontroller und Digitale Elektronik STM32 HSE Frage zur Clock-Konfiguration


von Cube_S (Gast)


Lesenswert?

Hallo erstmal,

ich verwende einen STM32F105R8T6 (Connectivity Line) mit einem 8 MHz 
Oszillator und musste feststellen, dass dieser nicht mit den gewohnten 
72Mhz SYSCLK läuft sondern mit 23.04 MHz. Ein Blick in die 
system_stm32F10x.c offenbart hier folgendes:
1
    /* Configure PLLs ------------------------------------------------------*/
2
    /* PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */
3
    /* PREDIV1 configuration: PREDIV1CLK = PLL2 / 5 = 8 MHz */
4
        
5
    RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL |
6
                              RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC);
7
    RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 |
8
                             RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5);
was ich so interpretiere, dass man von HSE=25MHz ausgeht. Das Define 
HSE_VALUE=8000000 hat hier also gar keine Wirkung. Was ist hier der Sinn 
des Erfinders. Muss ich in dieser Datei fummeln um meinen 
8MHz-Oszillator richtig zu konfigurieren?

von Dr. Sommer (Gast)


Lesenswert?

Cube_S schrieb:
> s. Muss ich in dieser Datei fummeln um meinen 8MHz-Oszillator richtig zu
> konfigurieren?

Benutze STM32CubeMX um den Takt grafisch zu konfigurieren und daraus den 
Initialisierungscode zu generieren, so musst du da nicht rumfummeln.

von Christopher B. (chrimbo) Benutzerseite


Lesenswert?

Cube_S schrieb:
> Das Define
> HSE_VALUE=8000000 hat hier also gar keine Wirkung. Was ist hier der Sinn
> des Erfinders. Muss ich in dieser Datei fummeln um meinen
> 8MHz-Oszillator richtig zu konfigurieren?

Richtig, das define zeigt erst Wirkung, wenn du den Clock abfragst. Der 
sollte dann dem tatsächlichen entsprechen, aber nicht 72MHz

von Cube_S (Gast)


Lesenswert?

> Benutze STM32CubeMX
Das tue ich aber nicht um den Code zu generieren, denn der bezieht sich 
auf HAL und meine GNU-ARM + Eclipse Umgebung hat StdPeriph-Code erzeugt.

von W.S. (Gast)


Lesenswert?

Cube_S schrieb:
> und musste feststellen, dass dieser nicht mit den gewohnten
> 72Mhz SYSCLK läuft sondern mit 23.04 MHz. Ein Blick in die
> system_stm32F10x.c

O je, schreib dir deinen System-Setup doch um himmelswillen selber, 
dann weißt du wenigstens, woran du bist. Den Quarzoszillator 
anzukriegen, die PLL richtig aufzusetzen und den Systemtakt dann 
draufzuschalten ist doch keine schwarze Magie! Lies das RefMan.

Ständig liest man hier Hilfeschreie von Leuten, die zwar nen µC 
einsetzen wollen, sich aber strikt weigern, sich Kenntnisse über 
selbigen vorher anzueignen. Stattdessen schmeißt man von hier und da und 
dort ein Stück Code in den Suppentopf und erwartet, daß es nun ja 
prächtig funktionieren soll. Ich könnte dir jetzt ne config.c für einen 
STM32F302 hier posten, die du dir bloß an deine HW anzupassen brauchst - 
aber ich tu's nicht, weil ich annehme, daß du ja ohnehin auf andere 
Weise deine Firmware zusammenzukriegen gedenkst. Falls du's dennoch 
haben willst, dann sag's explizit.

W.S.

von Bülent C. (mirki)


Angehängte Dateien:

Lesenswert?

Nimm das....INstalliere Dir trotzdem CubeMX. Aus der ClockConfig 
Übersicht siehst Du die zusammenhänge

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.