MSP430F249时钟配置后功耗变高,诚心请教!
现象:使用MSP430F249单片机,LFXT接32K晶振,高频晶振接12M。
程序A :
void main(void)
{
uint j;
WDTCTL = WDTPW + WDTHOLD;
LPM3;
}
程序B:
void main(void)
{
uint j;
WDTCTL = WDTPW + WDTHOLD;
BCSCTL1 = 0;//高频晶振打开,低频晶振低频模式,ACLK不分频
BCSCTL2 = SELM_2 | DIVM_0 | SELS | DIVS_0;//MCLK、SMCLK选择高频晶振,1分频,
BCSCTL3 = XT2S_2 | LFXT1S_0 | XCAP_3;//32K低频晶振,并配置负载电容
while(IFG1 & OFIFG){
IFG1 &= ~OFIFG;
for(j = 0; j < 1000; j++);
}
LPM3;
}
用万用表测得使用程序A功耗为3uA,而使用程序B功耗为1.5mA。
同时有程序C验证晶振正确起振:
void main(void)
{
uint j;
WDTCTL = WDTPW + WDTHOLD;
BCSCTL1 = 0;//高频晶振打开,低频晶振低频模式,ACLK不分频
BCSCTL2 = SELM_2 | DIVM_0 | SELS | DIVS_0;//MCLK、SMCLK选择高频晶振,1分频,
BCSCTL3 = XT2S_2 | LFXT1S_0 | XCAP_3;//32K低频晶振,并配置负载电容
while(IFG1 & OFIFG){
IFG1 &= ~OFIFG;
for(j = 0; j < 1000; j++);
}
P5DIR |= 0x70; // P5.6,5,4 outputs
P5SEL |= 0x70; // P5.6,5,4 options
while(1);
//LPM3;
}
程序B功耗高可能是哪里的问题?不解,诚心请教!