首先,我在mian函数最后,已经让430进入LMP4模式:
_BIS_SR(LPM4_bits + GIE);
然后打开了定时器A,28ms中断一次,在中断中计数,每300ms做按键扫描等工作
/********************************定时器A中断**************************************************/
// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
CCTL0 = 0;
delay_cnt++;
if(delay_cnt == 12) //每300ms才检测一次
{
keyscan();
charge_scan();
delay_cnt = 0;
}
WDTCTL = WDTPW + WDTCNTCL; //喂狗
CCTL0 = CCIE; // CCR0 interrupt enabled
}
我在程序中有用到ADC10,AVCC做基准,使用完后也有关闭:
ADC10CTL0 &= ~ENC;
ADC10CTL0 = 0;
ADC10CTL1 = 0;
板子上的其它外设,经过排除,最大不会超过300uA的电流。现在用15B万用表的uA档,测量待机电流稳定在600uA左右。