Bug in STM32CubeIDE, Version: 1.10.1, Build: 12716_20220707_0928 (UTC), regarding IRQ on DMA transfers with STM32F401
I have a small project which should generate an interrupt whenever a DMA transfer has completed. If I build the code for an STM32F411 then it works exactly as expected. If I build that same code for an STM32F401, which is within the same family as the 32F411, then the project is not built correctly. The DMA transfer still happens, but there is no interrupt upon transfer completion.
The problem is in the vector table.
.word SysTick_Handler
.word 0 /* Reserved */
.word EXTI16_PVD_IRQHandler /* EXTI Line 16 interrupt /PVD through EXTI line detection interrupt */
.word TAMP_STAMP_IRQHandler /* Tamper and TimeStamp interrupts through the EXTI line */
.word EXTI22_RTC_WKUP_IRQHandler /* EXTI Line 22 interrupt /RTC Wakeup interrupt through the EXTI line */
.word FLASH_IRQHandler /* FLASH global interrupt */
.word RCC_IRQHandler /* RCC global interrupt */
.word EXTI0_IRQHandler /* EXTI Line0 interrupt */
.word EXTI1_IRQHandler /* EXTI Line1 interrupt */
.word EXTI2_IRQHandler /* EXTI Line2 interrupt */
.word EXTI3_IRQHandler /* EXTI Line3 interrupt */
.word EXTI4_IRQHandler /* EXTI Line4 interrupt */
.word 0 /* Reserved */
.word 0 /* Reserved */
.word 0 /* Reserved */
.word 0 /* Reserved */
.word 0 /* Reserved */
.word 0 /* Reserved */
.word 0 /* Reserved */
.word ADC_IRQHandler /* ADC1 global interrupt */As you can see, it goes directly from ".word EXTI4_IRQHandler" directly to ".word ADC_IRQHandler". All those reserved words in-between should be for the DMA IRQ handlers.
