|
本帖最后由 huybn5776 于 2015-4-29 17:08 编辑
正好改完我的头文件,传给你一份
FlashRW.7z
(1.37 KB, 下载次数: 58)
※4/9发现有小bug,重传没问题的版本并加入FlashModifyChar
里面有打一点注释,应该不会太难懂,主要会用到这几个函数
FlashWriteChar → 写字节 1Byte
FlashEWChar → 擦除段并写入1Byte
FlashReadChar → 读取指定Flash位址 (1Byte)
FlashRW.7z
(1.37 KB, 下载次数: 58)
FlashReadInt → 读取指定Flash位址 (2Byte)
FlashData2 → 在Debug模式为MSP430编程的同时,把指定的2Byte数据写入Flash中,像是这样用↓
FlashData2(FData,0xd000,0x08,0x01)
进入Debug后开启Memory Browser,键入FData后可以看到地址0xd000那边为0108
把#define展开的话,会是这个样子
#pragma RETAIN(FData)
#pragma location=0xd000
const char FData[2] = {0x08,0x01};
其中FData数组大小可以自由更改以写入更多的数据
我用MSP430G2553从来没用到0xd000后面的空间过,故我把0xd000~0xecff都当成可用空间了
与InfoA~D不同的是,它擦除时是一次擦512Byte而非64Byte
故此这一区的数据修改过后,想改写的话一次得擦除512Byte才行
我另外写了段FlashModifyInt函数即为把这512Byte的数据备份0xea00~0xebff后,改好要修改的地方后再存回
在这个区段要改写数据的话,尽量不要跨区段改写,不然会变成要备份512Byte × 2
像是0xd000~0xd1ff 0xd200~0xd3ff,擦除0xd000~0xd1ff中任一地址即会把整个段擦除为0xff
|
|