大家好,
以下是客户提出的问题,可能需要您的帮助:
数据的大小接近2 KB ,并存储在闪存中。
我们的客户希望在对MSP430F5529重新编程时保留它。
如果没有,是否有其他方法保留这些数据。
谢谢。
此致,
耶鲁
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.
大家好,
以下是客户提出的问题,可能需要您的帮助:
数据的大小接近2 KB ,并存储在闪存中。
我们的客户希望在对MSP430F5529重新编程时保留它。
如果没有,是否有其他方法保留这些数据。
谢谢。
此致,
耶鲁
大家好,
下面是一个跟进问题:
此客户在尝试将数据写入闪存时出错,并且重复出现的可能性为100 %。
他提到了MSP430F55xx_flashwrite_01.c演示,下面是他的代码。
#include <msp430f5529.h>
char value; // 8-bit value to write to seg C
// Function prototypes
void write_BankA(char value);
void copy_C2D(void);
int main(void)
{
WDTCTL = WDTPW+WDTHOLD; // Stop WDT
value = 1; // initialize value
write_BankA(value++); // Write Bank A, increment value
// copy_C2D(); // Copy segment C to D
__no_operation(); // Loop forever, SET BREAKPOINT HERE
while(1);
}
//------------------------------------------------------------------------------
// Input = value, holds value to write to Bank A
//------------------------------------------------------------------------------
void write_BankA(char value)
{
unsigned int i;
char * Flash_ptr; // Initialize Flash pointer
Flash_ptr = (char *) 0x4400; // Bank A address
FCTL3 = FWKEY; // Clear Lock bit
FCTL1 = FWKEY+ERASE; // Set Erase bit
_DINT(); //no interrupt
*Flash_ptr = 0; // Dummy write to erase Flash seg
FCTL1 = FWKEY+WRT; // Set WRT bit for write operation
for (i = 0; i < 128; i++)
{
*Flash_ptr++ = value; // Write value to flash
}
while(FCTL3 & BUSY);
_EINT();
FCTL1 = FWKEY; // Clear WRT bit
FCTL3 = FWKEY+LOCK; // Set LOCK bit
}
重现步骤
1.在IAR中编译代码
2.下载和调试
3.按“执行”,然后报告错误
错误屏幕截图


环境与 平台
Windows10+IAR 7.12 .1.8
您好,Gary
这是这个项目。
FLASH_write01