This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好、
我想尝试一下 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); //从低功耗模式唤醒
我的意思是、我可以告诉程序在前8秒内不会休眠、因此如果您立即按下按钮、您就不会真正唤醒任何内容。 所有 P1.0 LED 指示灯(实际上)都是您按下按钮。
也许一个更有趣的显示是(1)打开主器件顶部的 LED (2)在"_bis_SR_register (LPM0_bits + GIE);"语句[现在是这样]之前关闭 LED (3)在该语句之后立即将其重新打开、而不是在 Port_1 ()中打开。 这样 LED 就反映了 LPM 状态。
我遵循了您提供的链接、但没有找到任何内容(完全不是?) 所以我不知道这个程序的目的是什么;我只是在阅读你发布的代码所说的内容。
未经请求:我不建议在 ISR 中使用(启用) LPM0的技术,因为它会导致堆栈溢出--如果您停止按下按钮,我估计该程序将在崩溃之前持续大约4分钟。
[编辑:我只是注意到您已经在做(1)。]