⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msp430x54x_wdt_05.c

📁 MSP430F5系列TI官方源码
💻 C
字号:
//******************************************************************************
//  msp430FG5438 Demo - Reset on Invalid Address fetch, Toggle P1.0
//
//  Description: This program demonstrates how a reset is executed if the CPU 
//  tries to fetch instructions from within the module register memory address 
//  range (0x0100 --0x0FEF) or from within unused address ranges. Toggle P1.0 
//  by xor'ing P1.0 inside of a software loop that ends with TAR loaded with 
//  3FFFh - op-code for "jmp $". This simulates a code error. The msp430FG5438 
//  will force a reset because it will not allow a fetch from within the address 
//  range of the peripheral memory, as is seen by return to the mainloop and 
//  LED flash.
//  ACLK = n/a, MCLK = SMCLK = default DCO ~1.045MHz
//
//                msp430FG5438
//             -----------------
//         /|\|                 |
//          | |                 |
//          --|RST              |
//            |                 |
//            |             P1.0|-->LED
//
//   M Smertneck
//   Texas Instruments Inc.
//   April 2008
//   Built with CCEv3.2 IAR Embedded Workbench Version: 3.42A
//******************************************************************************

#include <msp430x54x.h>

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer - SET BREAKPOINT HERE
  P1DIR |= 0x01;                            // Set P1.0 to output direction
  TA0R = 0x3FFF;                             // Valid opcode (for "jmp $")

  for (;;)
  {
    volatile unsigned int i;

    P1OUT ^= 0x01;                          // Toggle P1.0 using exclusive-OR

    i = 50000;                              // Delay
    do (i--);
    while (i != 0);
    // C code to directly call an address location
    ((void (*)())0x350)();                  // Invalid fetch ("call #0350h")
    /* 0x350 is address of TA0R register and is within the module register memory 
    address range (0x0100 --0x0FEF) */                                       
  }                                         // ** Should never get here **
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -