STM32F103VET6使用DMA进行ADC电压采集的一个错误
2023-12-28 15:31:51
野火的指南者,使用STM32CubeMX配置DMA进行ADC电压采集的例程。生成代码之后不能通过串口将采集到的数据发送到串口调试助手。
生成代码后再手动添加的仅有fputc等串口调试辅助代码,以及函数
HAL_ADC_Start_DMA()
该函数用于开启ADC的DMA传输。
关于MX_ADC1_Init
与HAL_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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!