STM32 Timer Funktionen

Gast #7328569
Lesenswert?

Hallo zusammen,

ich habe Probleme, dass mein STM32H7 "hängen bleibt", wenn ich nacheinander

1
HAL_TIM_Base_Start(&htim4);
2
HAL_TIM_OC_Start_IT (&htim4, TIM_CHANNEL_1 );

aufrufe. Beides einzeln funktioniert wunderbar. Da ich gerade Umsteiger auf den STM32 bin habe ich noch keine große Erfahrung damit: Ist es generell nicht möglich, beides nacheinander aufzurufen?

Gast #7328680
Lesenswert?

Blob schrieb:

Ist es generell nicht möglich, beides nacheinander aufzurufen?

Das hat weder mit der Architektur Cortex M noch mit deinem speziellen Chip noch mit dem Timern noch mit der Programmiersprache C zu tun - sondern es hat damit zu tun, was diese von irgendwem geschriebenen Funktionen denn so anstellen.

Also, wenn du den Quellcode zu diesem Zeug hast, dann schau dort hinein. Die bessere Alternative wäre, sich selbst genau das zu schreiben, was man für den konkreten Anwendungsfall braucht.

W.S.

#7328714
Lesenswert?

Es ist wohl nicht gedacht diese Funktionen so zu mischen:

UM2217 Rev.6, S. 1763

1
4.
2
Configure the TIM in the desired functioning mode using one of the Initialization function of this driver:
3
– HAL_TIM_Base_Init: to use the Timer to generate a simple time base
4
– HAL_TIM_OC_Init and HAL_TIM_OC_ConfigChannel: to use the Timer to generate  an Output
5
Compare signal.
6
- ...
7

8
5.
9
Activate the TIM peripheral using one of the start functions depending from the feature used:
10
– Time Base : HAL_TIM_Base_Start(), HAL_TIM_Base_Start_DMA(), HAL_TIM_Base_Start_IT()
11
– Input Capture : HAL_TIM_IC_Start(), HAL_TIM_IC_Start_DMA(), HAL_TIM_IC_Start_IT()
12
– Output Compare : HAL_TIM_OC_Start(), HAL_TIM_OC_Start_DMA(), HAL_TIM_OC_Start_IT()

Wenn der Timer trotzdem vorher schon laufen soll, dann kann man den OC wahrscheinlich mit den LL Makros dazupacken.

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