2022-10-23 06:40 AM
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.
2022-10-23 11:13 PM
As a quick workaround, you may generate the basic project for F401CCxx (which generates the correct startup), then copy the startup module from it to your project. Or, alternatively, (self-promotion warning) you may use my startup generator to create the correct C startup: https://github.com/gbm-ii/Cortex-M_C_startup_gen
2022-10-25 01:16 AM
Hello @SLink.1 and welcome to the Community :),
Thank you for bringing this issue our attention.
I reported this issue internally.
Internal ticket number: 137390 (This is an internal tracking number and is not accessible or usable by customers).
Kaouthar
To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.