各位大侠好:
我现在做430f149的低功耗功能,程序上用的是睡眠4(LPM4),进入睡眠前关闭了定时器A,B及串口1。我就用了这3个功能模块。所有的端口都设成了输出模式,输出寄存器也设置的0,只有2个口是设成上升沿中断。用的是3.579mhz的晶振。硬件上的外设也都断开了,但是功耗还是达到了9ma左右,想请教一下,还有哪可能漏电呢?
WDTCTL = 0x5A80; //关闭看门狗
GPRS_POWER_OFF;
LED_OFF;
ME2 &= ~URXE1;//接收不允许
ME2 &= ~UTXE1;//发送不允许
IE2 &= ~URXIE1;//关闭接收中断使能
TACTL &= ~MC0; // 停止定时器
TACTL &= ~MC1; // 停止定时器
TACTL &= ~TAIE; //禁止定时器A中断
TBCTL &= ~MC0; // 停止定时器
TBCTL &= ~MC1; // 停止定时器
TBCTL &= ~TBIE; //禁止定时器B中断
P1SEL = 0x00; // 将p1.2,p1.5口设为中断功能
P1OUT = 0x00; // p1口输出0
P1DIR = 0x00; // 将P1设为输入方式
P1IES = 0x00; // 设为上升沿中断
P1IE = 0x24; // 允许p1.0--p1.6口中断
P1IFG = 0x00; // 复位p1口的中断标志寄存器
P2SEL = 0x00;
P2OUT = 0x00;
P2DIR = 0xff;
P3SEL = 0x00;
P3OUT = 0x00; // 将P3.0 口输出高
P3DIR = 0xff; // 将P3.0 设为输出方式
P4SEL = 0x00; // 将p4口设为端口功能
P4OUT = 0x00; // p4.0 输出为0
P4DIR = 0xff;
P5SEL = 0x00; // 将p5口设为端口功能
P5OUT = 0x00; // p5输出为0
P5DIR = 0xff;
P6SEL = 0x00; // 将p6口设为端口功能
P6OUT = 0x00; // p6输出为0
P6DIR = 0xff;
LPM4; //睡眠
晶振的设置程序:
uchar i;
BCSCTL1 = 0xC0; // 选择高频模式
IFG1 &= ~OFIFG;
for(i=0;i<250;i++)_NOP();
while(IFG1&OFIFG)
{
IFG1 &= ~OFIFG; // 等待外部晶振稳定
for(i=0;i<250;i++)_NOP();
i=0;
}
for(i=0;i<250;i++)_NOP();
for(i=0;i<250;i++)_NOP();
BCSCTL2 = 0xC0; // 外部晶振为主频