尊敬的先生:
我有一个在430fr5994启动板上运行的简单程序。 它始终处于lpm 3中,但计时器运行并操作中断,从而切换LED。 将一切都放下。 装置应以8MHz运行。
我测量的睡眠电流为94ua,LED电流为3mA。 我想知道94ua是否正确。 希望这能不到10个月。
该方案如下:
#include <MSP4S.h>
/*
*定义LED端口和PIN
*/
#define LED_Pdir P1DIR
#define LED_pout P1OUT
#define LED_PIN BIT0
void ConfigTimerA(unsigned int delayCycles);
/***************************************************************************
*
*函数:BlinkInterrupt
*
*用途:使用TimerA和中断使LED闪烁
*
*参数:无
*
* .43ma和3.28ma
*
* .094和2.97ma 额外跳线已移除
*
* /
Void主(void)
{
WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器
PM5CTL0 &=~LCKLPM5; //禁用GPIO开机默认高阻抗模式
//初始化时钟和I/O:
//启动时钟系统,最大DCO设置为~8MHz
CSCTL0_H = CSBey >> 8; // CSBKey=A500。 解锁时钟寄存器
CSCTL1 = DCOFSEL_3 | DCORSEL; //将DCO设置为8MHz。 6|40
CSCTL2 =拉美_ VLOCLK | SESS__DCOCLK | SELM__DCOCLK;
CSCTL3 = DIVA__1 | DIVs__1 | DIVM__1; //设置所有分隔线
CSCTL0_H = 0; //锁定CS寄存器
//配置LED
P1SEL0 &=~BIT0; //为WFP 1.0 选择GPIO
P1SEL1 &=~BIT0;
P1DIR = 0;//将P1端口设置为输入方向
P1REN = 0; //下拉
LED_Pdir || LED_PIN;//将WFP 1.0 设置为输出引脚
LED_pout &=~LED_PIN;//将WFP 1.0 设置为低(关闭LED)
//将未使用的端口设置为下拉:
P2SEL0 &=~BIT0; //为WFP 1.0 选择GPIO
P2SEL1 &=~BIT0;
P2DIR =0;//将P2设置为输入方向
P2REN = 0; //下拉
P3SEL0 &=~BIT0; //为WFP 1.0 选择GPIO
P3SEL1 &=~BIT0;
P3DIR =0;//将P2设置为输入方向
P3REN = 0; //下拉
P4SEL0 &=~BIT0;
P4SEL1 &=~BIT0;
P4DIR =0; //至输入方向
P4REN = 0; //下拉
P5SEL0 &=~BIT0; //这有按钮
P5SEL1 &=~BIT0;
P5DIR =0; //至输入方向
P5REN = 0; //下拉
P6SEL0 &=~BIT0;
P6SEL1 &=~BIT0;
P6DIR =0; //至输入方向
P6REN = 0; //下拉
P7SEL0 &=~BIT0;
P7SEL1 &=~BIT0;
P7DIR =0; //至输入方向
P7REN = 0; //下拉
P8SEL0 &=~BIT0;
P8SEL1 &=~BIT0;
P8DIR =0; //至输入方向
P8REN = 0; //下拉
ConfigTimerA(5万);//配置计时器
同时(1)
{
_BIS_SR_REGISTER (LPM3_BITS + GIE);//使用中断进入低功耗模式3
}
}
/***************************************************************************
*
*函数:configTimerA
*
*用途:配置TimerA
*
*参数:delayCycles:延迟的时钟周期数
*
* /
void ConfigTimerA (无符号int delayCycles)
{
TA0CCTL0 |= CCIE;//启用计时器中断
TA0CCR0 = delayCycles;//计时器中的周期数
TA0CTL |= tassel_1;//使用ACLK作为计时器的来源
TA0CTL |= MC_1;//使用UP模式计时器
}
/***************************************************************************
*
*功能:TIMER_A0
*
*用途:中断处理程序,为TimerA0中断提供服务
*
*参数:无
*
* /
#pragma vector=TIMER0_A0_vector
__interrupt void Timer_A0 (void)
{
LED_pout ^= LED_PIN;//切换LED
//当我们退出中断例程时,我们返回到低功率模式
}
请告诉我。
谢谢!
John