Ich mache gerade meine ersten Schritte mit dem STM32F767ZI board
(https://www.st.com/en/evaluation-tools/nucleo-f767zi.html).
Dabei habe ich Probleme, unter FreeRTOS den TIM3 mit HAL unterzubringen.
Siehe hier: https://github.com/FBergemann/STM32-FreeRTOS-TIM
In
https://github.com/FBergemann/STM32-FreeRTOS-TIM/blob/master/Core/Inc/Init/Init_Global.h
habe ich:
1 | // #define TASK_LED2_USE_NEW_VERSION
|
2 | #undef TASK_LED2_USE_NEW_VERSION
|
3 |
|
4 | // #define TASK_LED2_USE_NEW_VERSION_ENABLE_IRQ
|
5 | #undef TASK_LED2_USE_NEW_VERSION_ENABLE_IRQ
|
Damit werden #3 LEDs einfach nur über eine einfache loop getoggled:
1 | while (1)
|
2 | {
|
3 | HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
|
4 | osDelay(250);
|
5 | }
|
Aber wenn ich verwende:
1 | #define TASK_LED2_USE_NEW_VERSION
|
2 | //#undef TASK_LED2_USE_NEW_VERSION
|
3 |
|
4 | // #define TASK_LED2_USE_NEW_VERSION_ENABLE_IRQ
|
5 | #undef TASK_LED2_USE_NEW_VERSION_ENABLE_IRQ
|
dann blinkt LED2 nicht mehr, weil ich dafür benötige:
1 | #define TASK_LED2_USE_NEW_VERSION
|
2 | //#undef TASK_LED2_USE_NEW_VERSION
|
3 |
|
4 | #define TASK_LED2_USE_NEW_VERSION_ENABLE_IRQ
|
5 | // #undef TASK_LED2_USE_NEW_VERSION_ENABLE_IRQ
|
Damit wird in
https://github.com/FBergemann/STM32-FreeRTOS-TIM/blob/master/Core/Src/stm32f7xx_hal_msp.c
aktiviert:
1 | #ifdef TASK_LED2_USE_NEW_VERSION_ENABLE_IRQ
|
2 | /* Enable the TIMx global Interrupt */
|
3 | HAL_NVIC_EnableIRQ(TIMx_IRQn);
|
4 | #endif
|
Aber damit komme ich nicht mehr durch die Initialisierung durch.
Ich habe schon rumgesucht, ob und wie HAL_TIM mit FreeRTOS verheiratet
werden kann. Aber bis jetzt bin ich damit nur gegen die Wand gelaufen.
Kann mir da eine von euch helfen?
Grüsse,
Frank