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.
您好!
我正在尝试在引脚 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);
#include volatile unsigned int 结果; //在本示例 中需要为全局 int main (void) { WDTCTL = WDTPW+WDTHOLD; //停止看门狗计时器 P6SEL = BIT2; //启用 A/D 通道输入 REFCTL0 &=~REFMSTR; //将 REFMSTR 重置为将控制权移交给 // ADC12_A 参考控制寄存器 ADC12CTL0 = ADC12ON+ADC12SHT02+ADC12REFON+ADC12REF2_5V; ADC12CTL1 = ADC12SHP; //使用采样计时器 ADC12MCTL0 = ADC12SREF_1 + ADC12INCH_2;// VR+=Vref+和 VR-=AVss、通道= A2 ADC12IE = BIT0; //启用 ADC12IFG.0 ADC12CTL0 |= ADC12ENC; //启用转换 while (1) { ADC12CTL0 |= ADC12SC; _bis_SR_register (LPM0_bits + GIE); //输入 LPM0、启用中断 __no_operation(); //对于调试器 } } #if defined (__TI_Compiler_version__)|| defined (__IAR_systems_icc_) #pragma vector=ADC12_vector __interrupt void ADC12ISR (void) #elif defined (__GNU__) void __attribute__((interrupt (ADC12_vector)))) ADC12ISR (void 编译器#error! #endif { switch (__evo_in_range (ADC12IV、34)) { case 0:break; //向量0:无中断 情况2:中断; //向量2:ADC 溢出 情况4:中断; //向量4:ADC 时序溢出 情况6: //向量6:ADC12IFG0 结果= ADC12MEM0; //移动结果,IFG 被清除 _BIC_SR_REGISTER_ON_EXIT (LPM0_BITS);//退出活动 CPU,在此处设置断点 中断; 情形8:中断; //向量8:ADC12IFG1 大小写10:break; //向量10:ADC12IFG2 大小写12:break; //向量12:ADC12IFG3 case 14:break; //向量14:ADC12IFG4 情况16:中断; //向量16:ADC12IFG5 情况18:中断; //向量18:ADC12IFG6 案例20:中断; //向量20:ADC12IFG7 case 22:break; //向量22:ADC12IFG8 case 24:break; //向量24:ADC12IFG9 大小写26:break; //向量26:ADC12IFG10 case 28:break; //向量28:ADC12IFG11 case 30:break; //向量30:ADC12IFG12 大小写32:break; //向量32:ADC12IFG13 case 34:break; //向量34:ADC12IFG14 默认值:break; } }