Part Number:MSP430F5529
描述
我在使用TI 官方的msp430f5529开发板写主存储器flash的扇区A时出错,复现概率100%
代码
代码是TI官方代码,稍作修改
#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 WDTvalue = 1;// initialize valuewrite_BankA(value++);// Write Bank A, increment value //copy_C2D();// Copy segment C to D__no_operation();// Loop forever, SET BREAKPOINT HEREwhile(1); } //------------------------------------------------------------------------------ // Input = value, holds value to write to Bank A //------------------------------------------------------------------------------ void write_BankA(char value) {unsigned int i;char * Flash_ptr;// Initialize Flash pointerFlash_ptr = (char *) 0x4400;// Bank A addressFCTL3 = FWKEY;// Clear Lock bitFCTL1 = FWKEY+ERASE;// Set Erase bit_DINT();//no interrupt*Flash_ptr = 0;// Dummy write to erase Flash segFCTL1 = FWKEY+WRT;// Set WRT bit for write operationfor (i = 0; i < 128; i++){*Flash_ptr++ = value;// Write value to flash}while(FCTL3 & BUSY);_EINT();FCTL1 = FWKEY;// Clear WRT bitFCTL3 = FWKEY+LOCK;// Set LOCK bit }
复现步骤
1. 在IAR 平台编译Ctrl+F7(compile)代码
2. 下载并调试Ctrl+D(download and debug)
3. 按运行键F5(Go),然后就报错了
错误截图
平台环境
windows10+IAR 7.12.1+MSP-EXP430F5529LP-V1.8
Flash_Write.zip
Yale Li:
您好,您能否提供一下你参考的例程的名称
,
zhang fan:
例程名称为MSP430F55xx_flashwrite_01.c
,
zhang fan:
您能否用我给的代码复现问题?
,
Yale Li:
您是想通过在代码中向Flash写入数据来解决您的另一个问题吗?
MSP430F5529: 请问如何在烧录程序进msp430单片机时保留flash数据?
我帮您把这个一起升级到英文论坛。
,
Yale Li:
不好意思回复您晚了。
想问一下您是用的什么调试工具?
是MSPFET吗?
,
zhang fan:
调试工具是开发板上板载的eZ-FET lite
,
Yale Li:
好的
,
Yale Li:
您好,您可以把您的project上传到这里吗?我们想帮您查看您的项目配置
,
zhang fan:
工程文件已经上传,项目是flash_write01
,
Yale Li:
收到,有了结果我会第一时间向您反馈
,
Yale Li:
您好,不好意思回复晚了。
在0x443B之后的数据并没有被擦除,这应该就是写入失败的原因。
建议您在写入之后做延时处理,并且在这里加入断点来查看存储器有没有擦除成功。