主题中讨论的其他器件: MSP430WARE
MSP430FG6626部件表示它支持128KB 的闪存、我们将尝试利用此存储器区域来写入数据。 这是可行的吗?
FLASH2区域似乎只有在编程时使用编程器存储代码时可写入。 我们试图声明全局数组如下: Int data[50000],我们收到一个编译器错误,说没有足够的内存。
我们可以使用只读全局存储器(但静态 const int array[50000])。
是否有办法在运行时的代码中使用此区域?
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.
MSP430FG6626部件表示它支持128KB 的闪存、我们将尝试利用此存储器区域来写入数据。 这是可行的吗?
FLASH2区域似乎只有在编程时使用编程器存储代码时可写入。 我们试图声明全局数组如下: Int data[50000],我们收到一个编译器错误,说没有足够的内存。
我们可以使用只读全局存储器(但静态 const int array[50000])。
是否有办法在运行时的代码中使用此区域?
我看到过 msp430ware 库中的一个闪存写入示例、并且该示例针对信息段执行此操作、这是否适用于代码/存储器段(FLASH2)?
主:代码内存
组3 32KB 0243FFh 至01C400h
组2 32KB 01C3FFh 至014400h
组1 32KB 0143FFh 至00C400h 3
组0 32KB 00C3FFh 至004400h
Flash_ptrC =(char *) 0x1880;//初始化闪存段 C ptr
Flash_ptrD =(char *) 0x1800;//初始化闪存段 D ptr
_disable_interrupt ();// 5xx 变通办法:禁用全局
//擦除时中断。 Re -使能
//如果需要,请执行 GIE
FCTL3 = FWKEY;//清除锁定位
FCTL1 = FWKEY_ERASE;//设置擦除位
*Flash_ptrD = 0;//虚拟写入以擦除闪存段 D
FCTL1 = FWKEY |WRT;//设置 WRT 位以进行写入操作
对于(I = 0;I < 128;I++)
{
* Flash_ptrD++=*闪存_PTRC++;//将值段 C 复制到段 D
}
FCTL1 = FWKEY;//清除 WRT 位
FCTL3 = FWKEY_LOCK;//设置 LOCK 位
如果我将 Flash_ptrC 更 改为 FLASH2的位置、这是否起作用?
FLASH_PTRC =(char*) 0x243FF (组3);
您可以尝试以下代码并修改指向 FLASH2区域的闪存指针。