现象:使用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功耗高可能是哪里的问题?不解,诚心请教! |