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.
首先MSP430F427 不推荐用于新设计,推荐使用MSP430F427A.
另外MSP430F427的话,您可以查看WDTIFG这个中断标志位来确认是否看门狗产生的复位。 但是无法分别是软件复位还是正常看门狗复位。
具体请查看 https://www.ti.com.cn/cn/lit/ug/slau056l/slau056l.pdf
的12-10 IFG1, Interrupt Flag Register 1
In watchdog mode, WDTIFG remains set until reset by software. In interval mode, WDTIFG is reset automatically by servicing the interrupt, or it can be reset by software.
WDTIFG在WDT模式下使CPU复位后,将保持为置位状态供程序查询处理.在WDT下,超时将使WDTIFG置位并保持在CPU重启后供软件测试
您可以在CCS内使用 view--->register来查看该位的值
我这边没有F4的板子,所以使用MSP430G2553开发板测试了一下
可以发现WDTIFG置位的
代码如下
/* --COPYRIGHT--,BSD_EX * Copyright (c) 2012, Texas Instruments Incorporated * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * * Neither the name of Texas Instruments Incorporated nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ******************************************************************************* * * MSP430 CODE EXAMPLE DISCLAIMER * * MSP430 code examples are self-contained low-level programs that typically * demonstrate a single peripheral function or device feature in a highly * concise manner. For this the code may rely on the device's power-on default * register values and settings such as the clock configuration and care must * be taken when combining code from several examples to avoid potential side * effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware * for an API functional library-approach to peripheral configuration. * * --/COPYRIGHT--*/ //****************************************************************************** // MSP430G2xx3 Demo - WDT+ periodic reset // // Description; Various reset intervals are configured in watchdog mode. // To illustrate the speed of the reset time the LED flashes in accordance // of the selected interval. // // ACLK = 32khz, MCLK = SMCLK = default DCO // // MSP430G2xx3 // ----------------- // /|\| XIN|- // | | | // --|RST XOUT|- // | | // | P1.0|-->LED // // D. Dang // Texas Instruments Inc. // February 2011 // Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10 //****************************************************************************** #include <msp430.h> int main(void) { // WDT is clocked by fSMCLK (1MHz) WDTCTL = WDT_MRST_32; // ~32ms interval (default) //WDTCTL = WDT_MRST_8; // ~8ms //WDTCTL = WDT_MRST_0_5; // ~0.5ms //WDTCTL = WDT_MRST_0_064; // ~0.064ms // WDT is clocked by fACLK (32KHz) //WDTCTL = WDT_ARST_1000; // 1000ms //WDTCTL = WDT_ARST_250; // 250ms //WDTCTL = WDT_ARST_16; // 16ms //WDTCTL = WDT_ARST_1_9; // 1.9ms P1DIR |= 0x01; P1OUT ^=0x01; __bis_SR_register(LPM0_bits + GIE); // Enter LPM3 w/interrupt }