我正在尝试在 H753 上将 ADC3 与 BDMA 结合使用。
从将 BDMA 通道 0 分配给 ADC3 的一些立方体生成的代码开始。
SRAM4 中分配的内存。添加了 BDMA_Channel0 和 ADC3 的中断处理程序。
当我启动 ADC3 时,我点击了默认的中断处理程序——就好像没有定义正确的处理程序一样。
ICSR = 0x891这意味着活动中断是 0x91。
0x91 - 16 = 129 正是 BDMA_Channel0_IRQn。
还有它的处理程序。但是这个处理程序没有被命中。为什么??
- DMA_HandleTypeDef hdma_adc3;
- ADC_HandleTypeDef hadc3;
- void ADC3_IRQHandler(void)
- {
- HAL_ADC_IRQHandler(&hadc3);
- }
- void BDMA_Channel0_IRQHandler(void)
- {
- HAL_DMA_IRQHandler(&hdma_adc3);
- }
我检查了清单和向量表,向量确实指向我的 BDMA_Channel0_IRQHandler。
VTOR 看起来是正确的(sys
tick 工作,默认处理程序也在那里)。
当代码位于内部闪存或 AXI RAM 中时,行为相同。未启用缓存。
那么默认处理程序是如何被调用的呢?
是否有
STM32H7x3 的 DMA 模式 (BDMA) 中的 ADC3 示例?