测试1: 系统时钟使用XT2(8M),然后使单片机进入LPM3模式,测试功耗
测试2: 系统时钟默认为DCO时钟,然后使单片机进入LPM3模式,测试功耗
两种情况下,除时钟设置部分的代码不同,其它代码完全相同,但测得的功耗却相差很大,在我的板子上测试1是40μA,测试2的功耗是170μA,相差了130μA,请问这是正常的吗?LPM3模式下的功耗与使用的时钟有关?
望指点!
============测试 1 的代码如下:=======================================
void main()
{
int i;
WDTCTL = WDTPW + WDTHOLD;
BCSCTL1&=~XT2OFF;
do {
IFG1 &= ~OFIFG;
for (i = 0xFF; i > 0; i--);
}
while ((IFG1 & OFIFG) != 0);
//MCLK=XT2=8MHz SMCLK=XT2/8=1MHz
BCSCTL2 |= SELM_2 + SELS + DIVS_3;
P1DIR = 0xFF; // All P1.x outputs
P1OUT = 0; // All P1.x reset
P2DIR = 0xFF; // All P2.x outputs
P2OUT = BIT1; // All P2.x reset
P3DIR = 0xFF; // All P3.x outputs
P3OUT = 0; // All P3.x reset
P4DIR = 0xFF; // All P4.x outputs
P4OUT = 0; // All P4.x reset
P5DIR = 0xFF; // All P5.x outputs
P5OUT = 0; // All P5.x reset
P6DIR = 0xFF; // All P6.x outputs
P6OUT = 0;
while(1)
{
_BIS_SR(LPM3_bits + GIE); // Enter LPM3
_NOP();
}
}
============测试 2 的代码如下:=======================================
int main(void)
{
WDTCTL = WDTPW + WDTHOLD;
P1DIR = 0xFF; // All P1.x outputs
P1OUT = 0; // All P1.x reset
P2DIR = 0xFF; // All P2.x outputs
P2OUT = BIT1; // All P2.x reset
P3DIR = 0xFF; // All P3.x outputs
P3OUT = 0; // All P3.x reset
P4DIR = 0xFF; // All P4.x outputs
P4OUT = 0; // All P4.x reset
P5DIR = 0xFF; // All P5.x outputs
P5OUT = 0; // All P5.x reset
P6DIR = 0xFF; // All P6.x outputs
P6OUT = 0;
while(1)
{
_BIS_SR(LPM3_bits + GIE); // Enter LPM3
_NOP();
}
}