您好!
我尝试使用 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);
}