请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430F5438A 您好!
我正在尝试对内部温度传感器执行 ADC 读取并将其存储在存储器8中、但是存储器8的中断标志永远不会触发 、只在存储器0上工作。 如果我分别将 ADC12SHT1_8、ADCMCTL8和 ADC12IE8替换为 ADCSHT0、8、ADCMCTL0和 ADC12IE0。
这是我的初始化代码:
/*初始化共享基准模块*/ REFCTL0 |= REFMSTR + REFVSEL_0 + REFON;//启用内部1.5V 基准 /*初始化 ADC12_A */ ADC12CTL0 = ADC12SHT1_8 + ADC12ON;//设置采样时间 ADC12CTL1 = ADC12SHP; //启用采样计时器 ADC12MCTL8 = ADC12SREF_1 + ADC12INCH_10;// ADC 输入通道 A10 =>温度感测 ADC12IE = ADC12IE8; // conv result-ADCMEMO 上的 ADC_IFG _DELAY_CYCLES (75); //延迟以使 Ref 稳定 //基于默认 DCO 频率。 //请参阅数据表以了解典型的趋稳情况 //时间。 ADC12CTL0 |= ADC12ENC;
和中断例程:
#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 编译器#else 不支持! #endif { switch (__even_in_range (ADC12IV、34)) { case 0:break; //向量0:无中断 情况2:中断; //向量2:ADC 溢出 情况4:中断; //向量4:ADC 时序溢出 情况6: //向量6:ADC12IFG0 温度= ADC12MEM0; //移动结果,IFG 被清除 _BIC_SR_REGISTER_ON_EXIT (LPM4_BITS);//退出活动 CPU break; case 8:break; case 10:break; //向量10:ADC12IFG2 大小写12:break; //向量12:ADC12IFG3 case 14:break; //向量14:ADC12IFG4 情况16:中断; //向量16:ADC12IFG5 情况18:中断; //向量18:ADC12IFG6 案例20:中断; //向量20:ADC12IFG7 案例22: //向量22:ADC12IFG8 温度= ADC12MEM8; //移动结果,IFG 被清除 _BIC_SR_REGISTER_ON_EXIT (LPM4_BITS);//退出活动 CPU 中断; 案例24:中断; //向量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; } }
ADC 读数是否可以分配给任何内存插槽、或者是否必须按顺序使用? 也就是说、如果内存0已被使用、我只能使用内存1?
谢谢、
Vlad