请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430FR5994 我总是会遇到 ADC12忙。 我希望 ADC12CONSEQ0 = 单通道、单次转换。
我看到过类似这样的另一篇文章、但它没有解决我的问题。 以下是代码。
#include #include /** * main.c */ int AnalogRead (uint8_t channel); void main (void){ WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器 for (;;){ int val = AnalogRead (ADC12INCH_5);//读取 A5 } } int AnalogRead (uint8_t channel) { /*配置 ADC 通道*/ ADC12CTL0 &=~ADC12ENC;//确保 ENC 为0,以便我们可以配置读取 ADC12CTL0 = ADC12SHT0_3 + ADC12ON + ADC12IE0;//64个时钟周期、ADC 开启、启用中断 ADC12CTL1 = ADC12SSEL_0;// ADC12OSC ADC12MCTL0 =通道;//通道 ADC12CTL0 |= ADC12ENC + ADC12SC;//启用并开始转换 while (((ADC12BUSY & ADC12CTL1)=0x01);//等待转换结束 返回 ADC12MEM0; } // ADC12中断服务例程 #pragma vector=ADC12_vector __interrupt void ADC12_ISR (void) { __BIC_SR_REGISTER_ON_EXIT (CPUOFF);//返回活动模式 }