我有 P1.2至 P1.0的接口3模拟输入、而我已将 ADC 配置为通道序列模式。
实际上、问题是我的 ADC 中断发生4次、而不是3次。
我设置计数器= 3。
#include
INT ADC = 0;
浮点 X_Axis、Y_Axis、Z_Axis;
int ADC_Result [3];
//unsigned int adc_result;
//void read_X_Axis_Data ();
//void read_Y_Axis_Data ();
//void read_Z_Axis_Data ();
int i = 3;
int main (空)
{
WDTCTL = WDTPW | WDTHOLD;//停止 WDT
//配置 GPIO
// P1DIR |= BIT1;//将 P1.0/LED 设置为输出方向
//配置 ADC A5-A4-A3引脚
P1SEL0 |= BIT0 | BIT1 | BIT2;//BIT2 = X 轴、BIT4 = Y 轴、BIT3 = Z 轴
P1SEL1 |= BIT0 | BIT1 | BIT2;
//禁用 GPIO 上电默认高阻抗模式以激活
//先前配置的端口设置
PM5CTL0 &=~LOCKLPM5;
//配置 ADC10
ADCCTL0 |= ADCSHT_5 | ADCON;// ADCON、S&H=16 ADC CLKS
ADCCTL1 |= ADCSHP | ADCCONSEQ_1;
ADCCTL2 |= ADCRES_1;// 10位转换结果
ADCIE |= ADCIE0;//启用 ADC 转换完成中断
ADCMCTL0 |= ADCINCH_2 | ADCSREF_0;// A1 ADC 输入选择;Vref=1.5V
//配置引用
// PMMCTL0_H = PMMPW_H;//解锁 PMM 寄存器
//PMMCTL2 |= INTREFEN;//启用内部基准
_DELAY_CYCLES (40);//基准趋稳延迟
// LPM0、ADC_ISR 将强制退出
while (1)
{
_DELAY_CYCLES (1000);
//while (ADCCTL1和 ADCBUSY);//等待 ADC 内核处于活动状态
ADCCTL0 |= ADCENC | ADCSC;
_bis_SR_register (GIE);
if (i ==0)
{
//Z_Axis =(0.003222 * ADC_Result [2]);
// Y_Axis =(0.003222 * ADC_Result [1]);
// X_Axis =(0.003222 * ADC_Result [0]);
// Y_Axis =((float)(0.003222 * ADC_Result [1]));
//Z_Axis =((float)(0.003222 * ADC_Result [2]));
ADC = 0;
I = 3;
}
}
}
// 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 (void)
其他
错误编译器不受支持!
#endif
{
switch (__evo_in_range (ADCIV、ADCIV_ADCIFG))
{
案例 ADCIV_NONE:
中断;
ADCIV_ADCOVIFG 案例:
中断;
案例 ADCIV_ADCTOVIFG:
中断;
ADCIV_ADCHIIFG 案例:
中断;
ADCIV_ADCLOIFG 案例:
中断;
ADCIV_ADCINIFG 案例:
中断;
ADCIV_ADCIFG 案例:
一----;
ADC_RESULSE[i]= ADCMEM0;
//ADC_Result = ADCMEM0;
ADC++;
//if (i =0)
//{
// i = 3;
//}
中断;
默认:中断;
}
}