HK32F030MF4P6的多通道ADC例子是错的?

[复制链接]
380|1
手机看帖
扫描二维码
随时随地手机跟帖
miltonlai|  楼主 | 2022-9-11 17:41 | 显示全部楼层 |阅读模式
14 ADC——多通道(间断模式)
这里面的代码貌似不对

  // 配置ADC通道转换时间
  /* ADC1 regular channels configuration */
  ADC_ChannelConfig(ADCx, ADC_CHANNEL1 , ADC_SampleTime_239_5Cycles);
  ADC_ChannelConfig(ADCx, ADC_CHANNEL3 , ADC_SampleTime_239_5Cycles);
  ADC_ChannelConfig(ADCx, ADC_CHANNEL4 , ADC_SampleTime_239_5Cycles);
  
如果按这样写, 只有最后一句是生效的, 因为 ADC_ChannelConfig 这个方法里面是这样的
void ADC_ChannelConfig(ADC_TypeDef* ADCx, uint32_t ADC_Channel, uint32_t ADC_SampleTime)
{
  uint32_t tmpreg = 0;

  /* Check the parameters */
  assert_param(IS_ADC_ALL_PERIPH(ADCx));
  assert_param(IS_ADC_CHANNEL(ADC_Channel));
  assert_param(IS_ADC_SAMPLE_TIME(ADC_SampleTime));

  /* Configure the ADC Channel */
  ADCx->CHSELR = (uint32_t)ADC_Channel;

  /* Clear the Sampling time Selection bits */
  tmpreg &= ~ADC_SMPR1_SMPR;

  /* Set the ADC Sampling Time register */
  tmpreg |= (uint32_t)ADC_SampleTime;

  /* Configure the ADC Sample time register */
  ADCx->SMPR = tmpreg ;
}


这一句
ADCx->CHSELR = (uint32_t)ADC_Channel;
直接就把前两句的设置覆盖了.

谁有正确能用的, 基于中断的多通道连续采集的例子?

使用特权

评论回复
ifxz0123| | 2022-9-16 18:06 | 显示全部楼层
把那三行改成下面这样的一行: 20220916180439.png

谢谢反馈,我会修改并更新一下例程代码!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则