STM32 HAL PWM Output

Gast #5890103
Lesenswert?

Hallo zusammen

Was ich möchte:
Eigentlich ganz simpel nur ein PWM Signal am Pin eines uC. (Duty Cycle 
ist erstmal egal)

Was ich gemacht habe:
Ich verwende den STM32F070CB mit HAL. Mit Cube hab ich mir den 
Initialisierungscode generieren lassen. (PB9 / TIM17_CH1)

Das ganze starte ich dann mit dem Befehl
HAL_TIM_PWM_Start(&htim17, TIM_CHANNEL_1);

Nur leider tut sich nichts.
Wenn ich aber den Code im Debugger laufen lasse, kann ich meinen PWM am 
Ausgang mit dem Oszi messen.

Ich vermute, ich habe irgendetwas bei der Initialisierung vergessen, das 
der Debugger von sich aus macht, vermutlich irgendeine CLK Zuweisung. 
Was ich noch versucht habe ist mit den Makros 
__HAL_RCC_GPIOB_CLK_ENABLE(); und __HAL_RCC_TIM17_CLK_ENABLE();
den Clock des Timermoduls zu aktiveren, hat aber auch nichts gebracht.

Hat jemand eine Vermutung an was das liegen könnte?

Ich habe meine Einstellungen im Cube und das Main file angehängt

Grüsse
Angehängte Dateien:
#5890252
Lesenswert?

Harry L. schrieb:
> Ich hab zwar mit dem F070 keine Erfahrungen, aber versuch mal mit
> "auto-reload preload" enable.

Damit hat es garantiert nichts zu tun, weder beim F070, noch bei 
irgendeinem anderen STM32.

Ich tippe mal auf MOE-Bit im BDTR vom TIM17 nicht gesetzt, dass lässt 
CubeMX nämlich (mWn) bei Timern mit Deadtime-Funktion weg. Probier mal 
ein

TIM17->BDTR |= TIM_BDTR_MOE;

Für die Erklärung siehe S.464 im Reference-Manual RM0360.

Wenn es nicht (bzw. nicht nur) am MOE-Bit liegt, dann tippe ich auf 
fehlende GPIO-Konfiguration (Output Alternate-Function, Push-Pull, etc), 
da ich die bei dir nirgends erkennen konnte. Auch da hilft ein Blick ins 
Handbuch.

Ich würde unbedingt empfehlen zuerst mal für die Peripherie und 
insbesondere für die Timer CubeMX und HAL wegzulassen und direkt über 
die Register zu programmieren. Es gibt von ST einen Haufen Beispielcode, 
genannt "STM32F0 Snippets" den du auf deren Webseite herunterladen 
kannst und der explizit für die F070-Reihe geschrieben ist. Dazu dann 
das entsprechende Kapitel im Reference-Manual lesen und du verstehst was 
das Ding kann und wie die Dinge zusammenhängen.

Für die ersten Gehversuche mit PWM würde ich mir aber einen Timer 
nehmen, der die Break- und Deadtime-Funktionalität nicht hat. Das ist 
einfach übersichtlicher im Handbuch (und natürlich auch bei CubeMX).

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