请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
您好!
我有一个配置 ADC:10位模式,通道序列,3通道输入
当我将 ADCCLK 配置为 ACLK 时、通道模式序列正常工作、同时也为我提供全部三个通道计数。
但是、当我将 ADCCLK 从 ACLK 更改为 SMCLK 以实现高采样率时、它仅为我提供一次2通道计数、并且停留在__ bis_SR_register (LPM0_Bits | GIE)行。
是否有人可以帮助解决此问题?
我有一个配置 ADC:10位模式,通道序列,3通道输入
当我将 ADCCLK 配置为 ACLK 时、通道模式序列正常工作、同时也为我提供全部三个通道计数。
但是、当我将 ADCCLK 从 ACLK 更改为 SMCLK 以实现高采样率时、它仅为我提供一次2通道计数、并且停留在__ bis_SR_register (LPM0_Bits | GIE)行。
是否有人可以帮助解决此问题?
MAIN ()
{
//配置 ADC A0~2引脚
P1SEL0 |= BIT0 + BIT1 + BIT2;
P1SEL1 |= BIT0 + BIT1 + BIT2;
//配置 ADC
ADCCTL0 |= ADCSHT_2 | ADCMSC | ADCON;
ADCCTL1 |= ADCSHP | ADCSSEL_1 | ADCCONSEQ_1;
ADCCTL2 |= ADCRES;
ADCMCTL0 |= ADCINCH_2;
ADCIE |= ADCIE0;
while (1)
{
i = 2;
while (ADCCTL1和 ADCBUSY);
ADCCTL0 |= ADCENC | ADCSC;
__ bis_SR_register (LPM0_bits | GIE);
_ no_operation ();
__no_operation
(_ 5000);_ no_operation
(_)(__operation);__cycles (_)
}
// ADC 中断服务例程
#if defined (__TI_Compiler_version__)|| defined (__IAR_systems_ICC__)
#pragma vector=adc_vector
__interrupt void adc_isr (void)
#elif defined (__GNU__)
void __attribute__((interrupt (adc_vector))))) adc_isr
#else error
编译器#void (void)!
#endif
{
switch (__even_in_range (ADCIV、ADCIV_ADCIFG))
}{
case ADCIV_none:
break;
case ADCIV_ADCOVIFG:
break;
case ADCIV_ADCTOVIFG:
break;
case ADCIV_ADCHIIFG:
break;
case ADCIV_ADCIV_ADCIFG:
break
案例 ADCIV_ADCINIFG:
break;
案例 ADCIV_ADCIFG:
ADC_RESULSE[i]= ADCMEM0;
if (i =0)
{
__BIC_SR_REGISTER_ON_EXIT (LPM0_BITS);//存在 LPM0
}
否则
为{i--};
}
break;
默认值:
break
}
此致、
Kelvin Kalariya