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.

[参考译文] CCS/MSP-EXP430FR2433:软件无法写入 MSP430持久阵列

Guru**** 2590580 points
Other Parts Discussed in Thread: MSP-EXP430FR2433

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/914554/ccs-msp-exp430fr2433-msp430-persistent-array-not-writable-by-software

器件型号:MSP-EXP430FR2433

工具/软件:Code Composer Studio

我在 CCS 10中遇到 MSP430 FRAM 持久性问题。 我在 MSP-EXP430FR2433的新 CCS 项目中创建了以下内容。 我希望看到的是、每次复位电路板时、电路板上的 LED0/1组合将根据我的持久性表发生变化。 但是、它不会。 LED 永远不会亮起。 在调试器中、当在存储器浏览器中观察 pData 时、我看到写入 pData[k]永远不会更新值。 不过、我可以手动更改存储器浏览器中的值、这些更改实际上是永久性的。 我尚未从默认文件中编辑.cmd 文件、因此定义了.TI.persistent。

#include 

#define P_DAT_LEN (8)
#pragma PERSISTENT (pData)
unsigned char pData[P_DAT_LEN]={0、1、2、3、2、1、0};

int main (void)
{
unsigned char x;
int k;
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器

//配置 LED
P1DIR |= 0x03;
P1SEL0 &=~0x03;
P1SEL1 &=~0x03;

PM5CTL0 &=~LOCKLPM5;

//清除 LED
P1OUT &=~0x03;

//将序列中的第一个值保存为"x"
x = pData[0];

//向量向左旋转1个位置
for (k=0;k<(P_DAT_LEN-1);k++)
{
pData[k]= pData[k+1];
}
pData[P_DAT_LEN-1]= x;

//使用"x"中保存的值点亮 LED
P1OUT |= x;

//永远循环
while (1);


返回0;
}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您可能需要禁用程序 FRAM 写保护、如下所示:

    >SYSCFG0 = FRWPPW | DFWP |(0*PFWP);  //程序保护关闭,但保持数据保护打开。

    然后、稍后:

    >SYSCFG0 = FRWPPW | DFWP |(1*PFWP);  //程序保护重新打开

    这是(大致)我在 FR4133上必须做的事情。 [参考用户指南(SLAU445I)表1-29]

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    非常好。 谢谢!