STM32F103VET6使用DMA进行ADC电压采集的一个错误

发布时间:2023年12月28日

野火的指南者,使用STM32CubeMX配置DMA进行ADC电压采集的例程。生成代码之后不能通过串口将采集到的数据发送到串口调试助手。
生成代码后再手动添加的仅有fputc等串口调试辅助代码,以及函数

HAL_ADC_Start_DMA()

该函数用于开启ADC的DMA传输。
关于MX_ADC1_InitHAL_ADC_MspInit的关系
生成的MX_ADC1_Init函数中HAL_ADC_Init会调用HAL_ADC_MspInit
其他生成的外设代码调用逻辑大致相似。

所以上述提到的HAL_ADC_Start_DMA()函数应添加到MX_ADC1_Init中设置完毕ADC的通道之后,也即MX_ADC1_Init的最后一行

另外还有一个问题,在使用STM32CubeMX生成代码时,设置使用DMA传输ADC数据时,DMA的NVIC不可取消,在野火的这个例程中,会导致DMA中断不断占用资源,main函数中的向上位机串口调试助手发送数据的语句不能执行,导致上位机无数据,需要在生成的MX_DMA_Init中将NVIC的代码注释掉

野火例程链接

文章来源:https://blog.csdn.net/weixin_45576019/article/details/135269047
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。