2019-06-13 08:26 AM
A couple versions back STM32Cube placed the BDMA_Init() early in the initialization code using my IOC file, later versions of Cube (5.1, 5.2) place it near the end. For a reason unknown to me if it is placed near the end the BDMA callbacks will never get called, but if it is placed before the MX_DMA_Init() function it works. I haven't tried to figure it out since I can work around it by moving the init function, but thought I'd point it out.
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_BDMA_Init(); <-- Works when it's here
MX_DMA_Init();
MX_MDMA_Init();
MX_ADC3_Init();
MX_ADC1_Init();
MX_ADC2_Init();
MX_SPI4_Init();
MX_I2C2_Init();
MX_I2C3_Init();
MX_FDCAN1_Init();
MX_TIM8_Init();
MX_TIM1_Init();
MX_TIM2_Init();
MX_TIM3_Init();
MX_TIM6_Init();
MX_TIM7_Init();
MX_USB_OTG_FS_PCD_Init();
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_DMA_Init();
MX_MDMA_Init();
MX_ADC3_Init();
MX_ADC1_Init();
MX_ADC2_Init();
MX_SPI4_Init();
MX_I2C2_Init();
MX_I2C3_Init();
MX_FDCAN1_Init();
MX_TIM8_Init();
MX_TIM1_Init();
MX_TIM2_Init();
MX_TIM3_Init();
MX_TIM6_Init();
MX_TIM7_Init();
MX_BDMA_Init(); <-- Does not work when it's here
MX_USB_OTG_FS_PCD_Init();
.ioc file attached.
STM32H743IIT6
Cube 5.2.1
2021-08-16 09:26 PM
@Martin Franke , you are right. Some peripheral initialization is wrong. For example, BDMA is initialized after ADC3 on STM32H7.
Current solution is to change default initialization order by: