[讨论] 430单片机低功耗模式问题

lidonglei1   2015-11-19 15:07 楼主
使用FR4133的launchpad开发板,运行例程msp430fr413x_lpm3_5_02.c 进入低功耗模式后点暂停出现如图所示 1.png 1.png 请教,为什么会停在这些位置? 本帖最后由 lidonglei1 于 2015-11-19 15:15 编辑
喝最烈的酒,..DIY最实用的东西

回复评论 (7)

帖一个程序,看门狗我关的点暂停后不应该是停留在“__no_operation();                       // For debugger”这里吗?


//******************************************************************************
//  MSP430FR413x Demo - Enters LPM3 with ACLK = XT1CLK = 32768Hz.
//
//  Description: Configures ACLK to be sourced from XT1 crystal. Enter LPM3 until
//               WDT ISR is executed and toggles the LED on P1.0.
//
//           MSP430FR4133
//         ---------------
//     /|\|               |
//      | |               |
//      | |      XIN(P4.1)|--
//      --|RST            |  ~32768Hz
//        |     XOUT(P4.2)|--
//        |               |
//        |           P1.0|-->LED
//
//  William Goh
//  Texas Instruments Inc.
//  January 2014
//  Built with IAR Embedded Workbench v5.60 & Code Composer Studio v5.5
//******************************************************************************
#include

int main(void)
{
    WDTCTL = WDT_ADLY_1000;                 // WDT 1000ms, ACLK, interval timer

//    SFRIE1 |= WDTIE;                        // Enable WDT interrupt

    P4SEL0 |= BIT2 + BIT1;                  // P4.2: XOUT; P4.1: XI1

    CSCTL4 = SELMS__DCOCLKDIV + SELA__XT1CLK;  // MCLK=SMCLK=DCO; ACLK=XT1

    // Port Configuration all un-used pins to output low
    P1OUT = 0x00;
    P2OUT = 0x00;
    P3OUT = 0x00;
    P4OUT = 0x00;
    P5OUT = 0x00;
    P6OUT = 0x00;
    P7OUT = 0x00;
    P8OUT = 0x00;

    P1DIR = 0xff;
    P2DIR = 0xff;
    P3DIR = 0xff;
    P4DIR = 0xff;
    P5DIR = 0xff;
    P6DIR = 0xff;
    P7DIR = 0xff;
    P8DIR = 0x0f;

    // Disable the GPIO power-on default high-impedance mode
    // to activate previously configured port settings
    PM5CTL0 &= ~LOCKLPM5;

    do
    {
        CSCTL7 &= ~(XT1OFFG | DCOFFG);      // Clear XT1 and DCO fault flag
        SFRIFG1 &= ~OFIFG;
    }while (SFRIFG1 & OFIFG);               // Test oscillator fault flag

    __bis_SR_register(LPM3_bits | GIE);     // Enter LPM3
    __no_operation();                       // For debugger
}

// Watchdog Timer interrupt service routine
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=WDT_VECTOR
__interrupt void WDT_ISR(void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(WDT_VECTOR))) WDT_ISR (void)
#else
#error Compiler not supported!
#endif
{
    P1OUT ^= 0x01;                          // Toggle P1.0 (LED) every 1s
}
喝最烈的酒,..DIY最实用的东西
点赞  2015-11-19 15:23
第一个问题,CCS没有使用过,但是既然跳转在你说的那个地方,看起来是JMP哪里是汇编咯。这种您仔细看下函数前面的那个注释,然后再对照用户手册看看呢。;
第二个问题,最好提供下debug的截图。
点赞  2015-11-19 16:12
引用: huaiqiao 发表于 2015-11-19 16:12
第一个问题,CCS没有使用过,但是既然跳转在你说的那个地方,看起来是JMP哪里是汇编咯。这种您仔细看下函数 ...

注释没看懂,上边的图是debug的吧?
我用FR5969运行里程就没这个问题。
TI技术支持论坛上有个人用F5529也遇到了相同的问题:
http://www.deyisupport.com/quest ... 0/f/55/t/97451.aspx
喝最烈的酒,..DIY最实用的东西
点赞  2015-11-19 16:19
引用: lidonglei1 发表于 2015-11-19 16:19
注释没看懂,上边的图是debug的吧?
我用FR5969运行里程就没这个问题。
TI技术支持论坛上有个人用F5529 ...

不管TI的还是别的,注释是写给使用者看的。我个人认为看懂注释很重要。
“我用FR5969运行里程就没这个问题”,会不会有类似启动文件的地方不太一样。
还有你刚才给的那个网址的二楼的说法,你可以参考下。这个我没办法验证。
点赞  2015-11-19 16:29
引用: huaiqiao 发表于 2015-11-19 16:29
不管TI的还是别的,注释是写给使用者看的。我个人认为看懂注释很重要。
“我用FR5969运行里程就没这个问 ...

哦谢谢啊 启动文件和“使能总中断的汇编文件”不懂是什么东西,我先看看
喝最烈的酒,..DIY最实用的东西
点赞  2015-11-19 17:08
引用: huaiqiao 发表于 2015-11-19 16:29
不管TI的还是别的,注释是写给使用者看的。我个人认为看懂注释很重要。
“我用FR5969运行里程就没这个问 ...

哦谢谢啊 启动文件和“使能总中断的汇编文件”不懂是什么东西,我先看看
喝最烈的酒,..DIY最实用的东西
点赞  2015-11-19 17:08
引用: lidonglei1 发表于 2015-11-19 17:08
哦谢谢啊 启动文件和“使能总中断的汇编文件”不懂是什么东西,我先看看

恩恩,你这个里面有没有我倒是不清楚了。我说的是类似启动文件的那种,像stm32中。
点赞  2015-11-19 19:33
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复