Forum: Compiler & IDEs Bluepill STM32: welche Taktquelle?


von Jürgen (derkleinemuck)


Lesenswert?

Hallo
Kann ich in der Arduino IDE mit stm32duino Core ermitteln, welche Clock 
Source für HSC und LSC aktiv ist und welcher Takt? So ganz werde ich aus 
der KAL-Doku nicht schlau.

von Nemopuk (nemopuk)


Lesenswert?

Jürgen schrieb:
> Hallo
> Kann ich in der Arduino IDE mit stm32duino Core ermitteln, welche Clock
> Source für HSC und LSC aktiv ist und welcher Takt? So ganz werde ich aus
> der KAL-Doku nicht schlau.

Das kannst du aus den relevanten Registern auslesen. Die Register sind 
im Reference Manual beschrieben.

https://www.st.com/resource/en/reference_manual/cd00171190-stm32f101xx-stm32f102xx-stm32f103xx-stm32f105xx-and-stm32f107xx-advanced-arm-based-32Bit-mcus-stmicroelectronics.pdf

Allerdings wundert mich, dass du diese Einstellung "ermitteln" willst, 
denn sie wird doch von deinem eigenen Programm eingestellt. Du musst 
doch wissen was du eingestellt hast.

Was ist KAL?

: Bearbeitet durch User
von N. M. (mani)


Lesenswert?

Nemopuk schrieb:
> Allerdings wundert mich, dass du diese Einstellung "ermitteln" willst,
> denn sie wird doch von deinem eigenen Programm eingestellt.

Er hat vermutlich ein Arduino Projekt. Da wird das vermutlich für ihn 
übernommen und er will nun wissen was da eingestellt wird.

Jürgen schrieb:
> welche Clock Source für HSC und LSC aktiv ist und welcher Takt

Bluepill ist ein F103.
Also hätte ich vermutet da:
https://github.com/stm32duino/Arduino_Core_STM32/blob/main/system/STM32F1xx/system_stm32f1xx.c

von Alexander (alecxs)


Lesenswert?

Nemopuk schrieb:
> Was ist KAL?

Kernel Abstraction Layer?

N. M. schrieb:
> Bluepill ist ein F103.
> Also hätte ich vermutet da:

https://github.com/stm32duino/Arduino_Core_STM32/blob/main/variants/STM32F1xx/F103C4T_F103C6(T-U)/variant_BLUEPILL_F103C6.cpp#L116

PLLCLK 72 MHz, LSI 40 kHz

: Bearbeitet durch User
von Jürgen (derkleinemuck)


Lesenswert?

N. M. schrieb:
> Er hat vermutlich ein Arduino Projekt. Da wird das vermutlich für ihn
> übernommen und er will nun wissen was da eingestellt wird.
>

Genau. Und ich bin verwirrt, weil ich andere Ergebnisse bekomme.
1
RCC_ClkInitTypeDef RCC_ClkInitStruct;
2
HAL_result = HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0);  
3
Serial.println(RCC_ClkInitStruct.SYSCLKSource);

liefert "1", was wenn ich mich zu 
https://github.com/stm32duino/Arduino_Core_STM32/blob/main/system/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h 
durchhangle und weiter zu rc.h: RCC_CFGR_SW_HSE für den System Clock 
Multiplexer bedeutet. Damit sind aber keine 72MHz möglich, wie bei
HAL_RCC_GetSysClockFreq() oder F_CPU ausgegeben wird.

BTW: Die Bluepill nutzt einen STM32F103C8, was dann wohl 
https://github.com/stm32duino/Arduino_Core_STM32/blob/main/variants/STM32F1xx/F103C8T_F103CB(T-U)/variant_PILL_F103Cx.cpp 
bedeutet - aber gleiche Verwirrung

: Bearbeitet durch User
von Alexander (alecxs)


Lesenswert?

HAL_RCC_ClockConfig() liest nur die Felder die du gesetzt hast. Dein 
RCC_ClkInitStruct ist leer.

: Bearbeitet durch User
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.