是这样的,我的程序作用是使用MSP430FE425上面自带的温度传感器测试温度,测量温度已经没问题了,但是想要使用超低功耗模式,用的SD16的中断实现超低功耗,然后显示到屏幕上。主程序如下。
int ADC_Result;
void main(void)
{
int i;
int T;
WDTCTL=WDTPW+WDTHOLD;
FLL_CTL0 |= XCAP18PF;
for(i=0;i<500;i++);
SD16CTL |= SD16REFON+SD16VMIDON+SD16SSEL0;
SD16CCTL0 |= SD16SNGL+SD16DF;
SD16INCTL0 |= SD16INCH_6;
for(i=0;i<500;i++);
BTCTL=0;
LCD_Init();
LCDCTL=LCDON+LCD4MUX+LCDSG0_1;
BTCTL=BT_fLCD_DIV128;
while(1)
{
SD16CCTL0 |= SD16IE;
_EINT();
SD16CCTL0 |= SD16SC;
while((SD16CCTL0&SD16IFG)==0)LPM0;
SD16CCTL0 &=~ SD16IE;
SD16CCTL0 &=~ SD16SC;
T=(ADC_Result * 9090)/65536-2730;
LCD_DisplayDecimal(T,1);//先乘以10再除以10,保留一位小数
LCD_InsertChar(DT);
LCD_InsertChar(CC);//显示℃符号
for(i=0;i<3000;i++);
}
}
#pragma vector=SD16_VECTOR
__interrupt void SD16ISR(void)
{
switch(SD16IV)
{
case 2:
break;
case 4:
ADC_Result=SD16MEM0;
break;
case 6:
ADC_Result=SD16MEM1;
break;
case 8:
ADC_Result=SD16MEM2;
break;
}
__low_power_mode_off_on_exit();
}
但是显示出现了问题,就是采集的数据一直为0,显示一直都是-273.0℃,请大佬帮忙看看是程序的哪里出现了问题。
补充:使用的是SD16的ADC0的通道6采集温度传感器数据。
int ADC_Result;
void main(void)
{
int i;
int T;
WDTCTL=WDTPW+WDTHOLD;
FLL_CTL0 |= XCAP18PF;
for(i=0;i<500;i++);
SD16CTL |= SD16REFON+SD16VMIDON+SD16SSEL0;
SD16CCTL0 |= SD16SNGL+SD16DF;
SD16INCTL0 |= SD16INCH_6;
for(i=0;i<500;i++);
BTCTL=0;
LCD_Init();
LCDCTL=LCDON+LCD4MUX+LCDSG0_1;
BTCTL=BT_fLCD_DIV128;
while(1)
{
SD16CCTL0 |= SD16IE;
_EINT();
SD16CCTL0 |= SD16SC;
while((SD16CCTL0&SD16IFG)==0)LPM0;
SD16CCTL0 &=~ SD16IE;
SD16CCTL0 &=~ SD16SC;
T=(ADC_Result * 9090)/65536-2730;
LCD_DisplayDecimal(T,1);//先乘以10再除以10,保留一位小数
LCD_InsertChar(DT);
LCD_InsertChar(CC);//显示℃符号
for(i=0;i<3000;i++);
}
}
#pragma vector=SD16_VECTOR
__interrupt void SD16ISR(void)
{
switch(SD16IV)
{
case 2:
break;
case 4:
ADC_Result=SD16MEM0;
break;
case 6:
ADC_Result=SD16MEM1;
break;
case 8:
ADC_Result=SD16MEM2;
break;
}
__low_power_mode_off_on_exit();
}
但是显示出现了问题,就是采集的数据一直为0,显示一直都是-273.0℃,请大佬帮忙看看是程序的哪里出现了问题。
补充:使用的是SD16的ADC0的通道6采集温度传感器数据。