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

野火的指南者,使用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的代码注释掉

野火例程链接

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值