您好!
我正在尝试在引脚 p6.2上连接 ADC。 我已初始化 ADC、但它不会转换模拟电压。 我在 p6.2上的最大电压为3.3。 我有4MHz smclk。 它不会进入 ISR。 请帮助我找到问题。
我的代码是:
void adc_configure()
{
P6SEL |= BIT2; //选择 bit0作为模拟输入引脚
ADC12CTL0 &=~ ADC12ENC;
REFCTL0 &=~REFMSTR; //重置 REFMSTR 以将控制权交给
// ADC12_A 参考控制寄存器
ADC12CTL0 |= ADC12ON + ADC12SHT0_12 + ADC12MSC + ADC12REFON + ADC12REF2_5V; //至 ADC10、基准打开、1024个 ADC12CLK 周期
ADC12CTL1 |= ADC12DIV_7 + ADC12SSEL_3; // ADC12SC 采样保持源、stright 二进制格式、/8时钟分频器、clk SOURCE = SMCLK、单通道信号转换、无操作被激活
ADC12CTL2 |= ADC12RES_1 + ADC12PDIV; //ADC12_A 分辨率10位(11个时钟周期转换时间)、ADC12_A 预分频器/4
ADC12MCTL0 = ADC12SREF_1 + ADC12INCH_2; //选择的 ref = VCC 和 VSS、选择的通道= A2
ADC12IE |= ADC12IE0; // conv result-ADCMEMO 上的 ADC_IFG
ADC12CTL0 |= ADC12ENC; //开始采样和转换、启用 ADC12
_bis_SR_register (GIE);
}
#pragma vector= ADC12_vector
_interrupt void ADC12_ISR (void)
{
while (!(ADC12IFG & BIT0));
_BIC_SR_REGISTER_ON_EXIT (CPUOFF);
}
这在我的主函数中:
ADC12CTL0 |= ADC12SC + ADC12ENC; //开始采样和转换,启用 ADC10
ADC12_value =(浮点) ADC12MEM0;
sprintf (字符串、"%3.2f"、ADC12_value);