请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430FR5962 大家好、所有专家、
我想保护 FRAM 部分、因为我在该文件中创建了一个名为 low_level_init.c 的文件、我编写了几行代码
#include <msp430.h>
extern unsigned char SYSNMIflag;// = 0;
unsigned int *ptr = 0;
unsigned int Data =0;
int __low_level_init(void)
{
    WDTCTL = WDTPW | WDTHOLD;               // Stop WDT
    // Configure GPIO
    P1DIR |= BIT0;                          // Configure P1.0 for LED
    // Disable the GPIO power-on default high-impedance mode to activate
    // previously configured port settings
    PM5CTL0 &= ~LOCKLPM5;
    // Configure MPU
    MPUCTL0 = MPUPW;                        // Write PWD to access MPU registers 
    MPUSEGB1 = 0x0400;                      // B1 = 0x4000; B2 = 0x5FFF
    MPUSEGB2 = 0x0440;                      // Borders are assigned to segments
    //  Segment 1 - Execute, Read
    //  Segment 2 - Execute, Read
    //  Segment 3 - Execute, Read
    MPUSAM =  MPUSEG1RE | MPUSEG1XE |
              MPUSEG2RE | MPUSEG2XE |
              MPUSEG3RE | MPUSEG3XE |
              MPUSEGIRE | MPUSEGIWE| MPUSEGIXE;
    MPUCTL0 = MPUPW | MPUENA | MPUSEGIE;    // Enable MPU protection
                                            // MPU registers locked until BOR
      /*Data = 0x88;
    // Cause an MPU violation by writing to segment 2
      ptr = (unsigned int  *)0x4000;
     *ptr = Data;*/
    while(SYSNMIflag)                       // Has violation occurred due to Seg2
    {
        P1OUT ^= BIT0;                      // Toggle LED
        __delay_cycles(100000);             // Delay to see toggle
        MPUCTL0 = MPUPW;
        SYSNMIflag = 0;
        PMMIFG |= SVSHIFG; 
    }
   
  return 1;
}
// System NMI vector
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector = SYSNMI_VECTOR
__interrupt void SYSNMI_ISR(void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(SYSNMI_VECTOR))) SYSNMI_ISR (void)
#else
#error Compiler not supported!
#endif
{
    switch (__even_in_range(SYSSNIV, SYSSNIV__CBDIFG))
    {
        case SYSSNIV__NONE: break;
        case SYSSNIV__UBDIFG: break;
        case SYSSNIV__MPUSEGPIFG: break;
        case SYSSNIV__MPUSEGIIFG: break;
        case SYSSNIV__MPUSEG1IFG: break;
        case SYSSNIV__MPUSEG2IFG:
            MPUCTL1 &= ~MPUSEG2IFG;         // Clear violation interrupt flag
            SYSNMIflag = 1;                 // Set flag
            break;
        case SYSSNIV__MPUSEG3IFG: break;
        case SYSSNIV__VMAIFG: break;
        case SYSSNIV__JMBINIFG: break;
        case SYSSNIV__JMBOUTIFG: break;
        case SYSSNIV__CBDIFG: break;
        default: break;
    }
}

但我可以看到、在内存位置0x4800中有 FF 3F FF 3F 3F... 等等?
1) 1)如何保护 FRAM 部分?
2) 2)如何卸下 FF 3F? 我认为这是 IPE、但我尚未启用它。
能不能有人尽快澄清这一点,因为这是紧急的。