wyjie 发表于 2022-6-16 21:43

stm32cubeide下,ADC配置DMA会出错

ADC是定时器触发的,用DMA传输,开启DMA,设置循环模式,word搬运。

wyjie 发表于 2022-6-16 21:45


wyjie 发表于 2022-6-16 21:47


wyjie 发表于 2022-6-16 21:51

在调试过程中会进入HardFault_Handler,单步调试发现问题在 HAL_ADC_MspInit(hadc);中
继续深入发现是tmp = hdma->Instance->CCR;这一句引起的错误。此时CCR是0

wyjie 发表于 2022-6-16 21:53


wyjie 发表于 2022-6-16 21:56

如果不开起ADC的DMA就不会有这个错误。

wyjie 发表于 2022-6-16 21:59

很奇怪,都是stm32cubeide自动生成的代码,为什么呢?以前用f0单片机如此配置也没出错。

supernan 发表于 2022-6-16 22:02

屏蔽掉用于搬运ADC的DMA通道的中断就好了。

supernan 发表于 2022-6-16 22:08


xxrs 发表于 2022-6-16 22:12

注意下地址访问越界或地址对齐方面的问题。

wyjie 发表于 2022-6-16 22:18

你也遇到这个问题了吗?cube里配置,这个dma中断还是默认选择的,不能取消。

wyjie 发表于 2022-6-16 22:20

那屏蔽掉这个中断,adc的dma还能正常搬运么?

wyjie 发表于 2022-6-16 22:22

xxrs 发表于 2022-6-16 22:12
注意下地址访问越界或地址对齐方面的问题。

请问stm32cubeide调试,不支持全局变量的动态自动刷新吗?只能暂停下来后看

dengdc 发表于 2022-6-16 22:24

你可以试一下,我现在ADC开了两个通道,之前中断没屏蔽会卡死。

wyjie 发表于 2022-6-16 22:27

我试了一下,屏蔽该中断没有用。而且我发现不是adc启用dma会出错,而且dma超过2路,就会出错。DMA1的通道1、4、5,随便取消一路,就没问题了。

zhenykun 发表于 2022-6-16 22:30

估计你程序逻辑上有问题。

yszong 发表于 2022-6-16 22:36

你说用到DMA 1 4 5 三个通道,你ADC只需用到通道1,另外的两个通道是干什么的?

supernan 发表于 2022-6-16 22:38

中断之间有无优先级抢占或互斥方面的问题,好好检查下。

wyjie 发表于 2022-6-16 22:40

都是stm32cubeide里配置的,通道4和5是串口的收发。

jiajs 发表于 2022-6-16 22:42

我也遇到这个问题了后来没办法不用dma 了
页: [1] 2
查看完整版本: stm32cubeide下,ADC配置DMA会出错