MSP430 5xx-flash Beyond the range of 64K addresses to read a(7)

发布时间:2021-06-05

5xx-超出64 k地址的flash 读和写和segment A 的读写理解

__disable_interrupt(); // 5xx Workaround: Disable global // interrupt while erasing. Re-Enable // GIE if needed FCTL3 = FWKEY; // Clear Lock bit FCTL1 = FWKEY+ERASE; // Set Erase bit

*(unsigned int *)Flash_ptrD = 0; // Dummy write to erase Flash seg D FCTL1 = FWKEY+WRT; // Set WRT bit for write operation

for (i = 0; i < 128; i++) {

*Flash_ptrD++ = *Flash_ptrC++; }

FCTL1 = FWKEY; FCTL3 = FWKEY+LOCK; }

void write_Seg_1(char value) {

unsigned int i;

char * Flash_ptr; Flash_ptr = (char *) 0x10000;

__disable_interrupt(); FCTL3 = FWKEY; FCTL1 = FWKEY+ERASE; *(unsigned int *)Flash_ptr = 0; FCTL1 = FWKEY+WRT;

for (i = 0; i < 128; i++) {

*Flash_ptr++ = value++; }

FCTL1 = FWKEY; FCTL3 = FWKEY+LOCK; }

调试截图如下: 初始化时LOCKA=1

// copy value segment C to seg D // Clear WRT bit // Set LOCK bit // Initialize Flash pointer // 5xx Workaround: Disable global // interrupt while erasing. Re-Enable // GIE if needed // Clear Lock bit // Set Erase bit

// Dummy write to erase Flash seg // Set WRT bit for write operation // Write value to flash // Clear WRT bit // Set LOCK bit

精彩图片

热门精选

大家正在看