材料
示例
说明
Flash Memory API 使用 3 * 4K 字节的内存(12Кb),这对于大多数应用程序来说通常是足够的。然而,更大的可以通过指定特定的内存地址和所需的大小来提供内存。
在本例中,指定 flash 的起始地址为 0xFD00(“FLASH_MEMORY_APP_BASE”),大小为 0x1000。使用偏移量 0x1F00,即 flash 中的 0xFD000+0x1E00 = 0xFEE00。读取地址的值,然后加 1。接下来,将新值写入相同的地址。最后一步,再次从地址中读取值,并与增加的值进行比较。如果值相同,则证明读写一个字成功。每次 BW21-CBV-Kit 重新启动时,读取值都会增加,直到“RESET_THRESHOLD”(最多为 0xFFFFFFFF),然后重置为 0。
实现流程
打开示例“文件”->“示例”->“amebafashmemory”->“ReadWriteWord”。
编译并上传到 BW21-CBV-Kit,多次按复位按键。打开串行监视器,查看结果。
默认情况下,Flash Memory API 使用地址 0xFD000~0xFFFFF 来存储数据。写入 Flash 时有限制。也就是说,除非先擦除扇区,否则不允许直接将数据写入上次写入时使用的地址。Flash Memory API 有 1 个擦除相关功能。
- 使用“FlashMemory.eraseSector(sector_offset)”擦除 Flash 目标地址的一个扇区(4K 字节)。
- 使用“FlashMemory.eraseWord(offset)”擦除 Flash 目标地址的一个字(4 字节)。
|