2025-10-02 3:29 AM
This (DMA_STR0_IRQHandler) won't, but this (DMA1_Stream0_IRQHandler) is work-fine.
Clearly, the naming and cases are different, but these two handlers are part of startup file, were generated from two different projects options (Empty and Cube MX) for the same MCU (STM32H723).
Project-generated option: Cube MX
.word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */
.word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */
.word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */
.word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */
.word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */
.word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */
Project-generated option: Empty
.word DMA_STR0_IRQHandler /* DMA1 Stream0 */
.word DMA_STR1_IRQHandler /* DMA1 Stream1 */
.word DMA_STR2_IRQHandler /* DMA1 Stream2 */
.word DMA_STR3_IRQHandler /* DMA1 Stream3 */
.word DMA_STR4_IRQHandler /* DMA1 Stream4 */
.word DMA_STR5_IRQHandler /* DMA1 Stream5 */
.word DMA_STR6_IRQHandler /* DMA1 Stream6 */
I encountered this in the past and solved it by unifying my start-up file.
After a long period of not working on the project.
In resuming, I created a new project and copied files from the previous project. I had forgotten the handler issue which I had before.
Unfortunately, the new project (empty) came with vector labels abbreviated and in different cases.
This caused me days of battling DMA1 until I remembered a past experiment and changed the DMA handler. from DMA_STR0_IRQHandler to DMA1_Stream0_IRQHandler, then it started to work.
I got it working but voicing out my frustrated days!