stm32cubeide下,ADC配置DMA会出错
ADC是定时器触发的,用DMA传输,开启DMA,设置循环模式,word搬运。在调试过程中会进入HardFault_Handler,单步调试发现问题在 HAL_ADC_MspInit(hadc);中
继续深入发现是tmp = hdma->Instance->CCR;这一句引起的错误。此时CCR是0
如果不开起ADC的DMA就不会有这个错误。
很奇怪,都是stm32cubeide自动生成的代码,为什么呢?以前用f0单片机如此配置也没出错。
屏蔽掉用于搬运ADC的DMA通道的中断就好了。
注意下地址访问越界或地址对齐方面的问题。
你也遇到这个问题了吗?cube里配置,这个dma中断还是默认选择的,不能取消。
那屏蔽掉这个中断,adc的dma还能正常搬运么?
xxrs 发表于 2022-6-16 22:12
注意下地址访问越界或地址对齐方面的问题。
请问stm32cubeide调试,不支持全局变量的动态自动刷新吗?只能暂停下来后看
你可以试一下,我现在ADC开了两个通道,之前中断没屏蔽会卡死。
我试了一下,屏蔽该中断没有用。而且我发现不是adc启用dma会出错,而且dma超过2路,就会出错。DMA1的通道1、4、5,随便取消一路,就没问题了。
估计你程序逻辑上有问题。
你说用到DMA 1 4 5 三个通道,你ADC只需用到通道1,另外的两个通道是干什么的?
中断之间有无优先级抢占或互斥方面的问题,好好检查下。
都是stm32cubeide里配置的,通道4和5是串口的收发。
我也遇到这个问题了后来没办法不用dma 了
页:
[1]
2