请教关于ADC模块的软件触发转换等问题

2025-04-07 12:10:35
推荐回答(1个)
回答1:

  我刚好写完 完全可以显示正确的数值
  复制给你:
  //初始化ADC12
  P6SEL |= 0x01; // 使能ADC通道
  ADC12CTL0 = ADC12ON+SHT0_8+MSC; // 打开ADC,设置采样时间
  // ADC12CTL0|= REFON+REF2_5V;
  // ADC12MCTL0|=SREF_1;//选择内部参考电压源
  ADC12CTL1 = SHP+CONSEQ_2; // 使用采样定时器
  ADC12IE = 0x01; // 使能ADC中断
  ADC12CTL0 |= ENC; // 使能转换
  ADC12CTL0 |= ADC12SC;// 开始转换
  #pragma vector=ADC_VECTOR
  __interrupt void conversion()
  {
  uint buffer[32];
  static uint index=0;
  buffer[index++]=ADC12MEM0;
  if(index==32)
  {
  index=0;
  uchar i;
  unsigned long sum=0;
  for(i=0;i<32;i++)
  sum+=buffer[i];
  sum=sum/32;
  }
  }
  得到的sum就是平滑滤波得到的数值,