x-cube-azrtos-h7
x-cube-azrtos-h7 copied to clipboard
HAL_InitTick() timer interrupt enabled before timer handle initialized
Describe the set-up
- Custom board with STM32H743BIT6 microcontroller
- CubeMX 6.8.0
- IAR Workbench 9.2 (CLI V9.3.2.391)
Describe the bug
In stm32h7xx_hal_timebase_tim.c, the HAL_InitTick() function enables the selected timer's IRQ before initialization the timer handle. When a software reset occurs (under debug), this results in the interrupt firing as soon as it is enabled, resulting in a HardFault because the handle has not been initialized. The htim6.Instance is equal to 0 when the interrupt occurs.
How to reproduce the bug (skip if none)
- In CubeMX, select TIM6 source for SysTick
- Build, load and run project under debug
- Restart program (still under debug)
- HardFault occurs within
HAL_NVIC_EnableIRQ(TIM6_DAC_IRQn);
Additional context
A simple solution would be to move the IRQ enable after the timer initialization. For example: stm32h7xx_hal_timebase_tim.c.patch
Screenshots