大家好、
我想尝试一下 Aldo Briano 的一些程序、下面是 wiki 链接:
processors.wiki.ti.com/.../MSP430_LaunchPad_Low_Power_Mode。
程序进入低功耗模式(状态寄存器中的 CPUOFF 和 GIE 为1)、
但我无法通过按下 P1.3按钮来唤醒 CPU。
我有 Launchpad MSP-EXP430G2 和 MSP430G2553修订版1.5、没有晶振焊接、P1.3上的上拉电阻器 R34和电容器 C24被移除。 我使用 CCS 版本:6.2.0.00050。
我使用 VLOCLK 和 ACLK 来节能。 我n´t 我选择的低功耗模式无关紧要。 代码应可在任何模式下工作。
代码如下:
// // MSP430G2xx 演示- WDT、低功耗模式、间隔溢出 ISR、DCO SMCLK // 说明:使用由 WDT ISR 定时的软件进入低功耗模式。 睡眠时、LED //将关闭、端口1中断将唤醒 MCU 并打开 // LED。 根据 此示例中用于 WDT 的默认// DCO/SMCLK 时钟源、MCU 将以大约250 * 32ms 的时间睡眠。 // ACLK = n/a、MCLK = SMCLK =默认 值// // MSP430G2xxx //--- ///|\| XIN|- //||//-|RST XOUT|- //|// | P1.0|->LED // Aldo Briano // Texas Instruments Inc. // 2010年7月 //********* #include unsigned int wdtCounter = 0; void main (void) { WDTCTL = WDT_MDLY_32;//将看门狗计时器间隔设置为~32ms IE1 |= WDTIE;//启用 WDT 中断 P1DIR |= BIT0;//将 P1.0设置为输出方向 P1OUT |= BIT0; //打开1.0 P1REN 上的 LED |= BIT3;//启用 SW2 (P1.3) P1DIR |= BIT3上的电阻器;//将 P1.3设置为输出方向以防止 P1OUT |= BIT3悬空;//启用 SW2 (P1.3) P1IE 上的上拉电阻|= BIT3;//启用 P1LSB = TRB;//启用 P1LSB = TRB;//启用 P1BC3 = TRB = TRB;//启用 P1LSB = TRB = TRB;//中断 //从 VLO _enable_interrupt ()运行 ACLK; for (;) { } //看门狗计时器中断服务例程 #pragma vector=WDT_vector #pragma INTERRUPT (watchdog_timer) void watchdog_timer (void) { if (wdtCounter ==249) { P1OUT = 0x00;// P1.0关闭 wtbis _interrupt = wt0+ pitter; }wtbits + PM0+++= PM0++ register } //端口1中断服务例程 #pragma vector=Port1_vector #pragma INTERRUPT (Port_1) void Port_1 (void) { wdtCounter = 0;//重置看门狗计时器计数 器 P1OUT |= 0x01;//打开 P1IFG 上的 LED = 0x0; __BIC_SR_REGISTER_ON_EXIT (LPM0_EXIT); //从低功耗模式唤醒