STM32F302多通道ADC采集和DMA传输

在CubeMX里进行设置时,发现STM32F103和STM32F302之间在出现的设置界面上有些差异,照搬F103的设置并不能使多通道的ADC和DMA传输正常工作。经过多番研究和尝试,终于找到了正确的设置方式,做个记录分享和留存。

芯片:STM32F302
CubeMX版本: 6.5.0

以下给出了四通道ADC实现DMA传输的CubeMX设置页面。其中需要特别注意(有别于STM32F103)的地方如下:

  • Clock Prescaler,这个设置在F103里是没有的。
  • DMA Continuous Requests,这个设置必须为Enabled,否则只会产生一次DMA传输。
  • End of Conversion Selection,对于多通道ADC采集需要选择为End of sequence of conversion,否则只会有第一通道转换的结果,而不是四个通道的转换结果。

在这里插入图片描述
在这里插入图片描述
除了以上设置需要注意外,在自动生成的代码里还存在一个bug:它会先初始化ADC,然后再初始化DMA,而这样的顺序也会导致程序工作不正常。一定要在ADC初始化之前进行DMA初始化,否则也无法正常工作,正确的代码片段如下:

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_ADC1_Init();
  MX_DAC_Init();
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值