This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430FR5994:ADC12 - ADC12BUSY 位永远不会清除

Guru**** 2387060 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1170224/msp430fr5994-adc12---adc12busy-bit-never-clears

器件型号:MSP430FR5994

您好!

我尝试使用 ADC12_B 模块执行简单的 ADC 读取、但 由于某种原因、ADC12BUSY 始终保持繁忙状态。 当我的代码运行时、处理器卡在 while 循环中、等待 BUSY 位清零。

我已经多次介绍了设置、无法确定出现了什么问题。

空 ADCInit (空)

  //清除使能位
  ADC12CTL0 &=~ADC12ENC;


  // 8个 ADC12CLK 周期,ADC 打开
  ADC12CTL0 =(ADC12SHT1_1 | ADC12SHT0_1 | ADC12ON);


  // ADC12OSC 时钟源、单通道转换
  ADC12CTL1 =(ADC12SSEL_0 | ADC12CONSEQ_0);


  // 12位,右对齐
  ADC12CTL2 =(ADC12RES_2 | ADC12DF_0);

uint16_t SampleADC (uint8_t adcChannel)

  //清除使能位
  ADC12CTL0 &=~ADC12ENC;


  //设置通道
  ADC12MCTL0 = adcChannel;


  //选择用于单次转换的 MEM0起始地址
  ADC12CTL3 = ADC12CSTARTADD_0;


  //启用并开始转换
  ADC12CTL0 |=(ADC12ENC | ADC12SC);


  //等待忙位清零
  while (ADC12CTL1和 ADC12BUSY);


  //清除使能位
  ADC12CTL0 &=~ADC12ENC;


  //从 MEM0读取结果
  返回(ADC12MEM0和0x0FFF);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我能够解决我的问题

    修复了我将 ADC12CTL1 SAMPCON 位设置为1的问题