搞清楚了!不同芯片FALSH分成了很多页,每次写完之后,如果要更新,必须整页擦除!之后才可以再写!
擦除后,整个页中的数据都是FFFF了!
测试了一下!我这里FLASH有256页。
调用
FLASH_ErasePage(0x0807f800)
或者
FLASH_ErasePage(0x0807ffff)
只要()里面的数是flash第256页中对应的任何一个地址!
就是擦除对应的页!
擦除后,就可以写入新的数据了!
另外,FLASH是32位的,也就是4个字节的长度,
因此写入的时候要注意,哪怕只是写入一个16位的数,他也会占据1个字的长度。
例如:存放3个16位的数,放在flash的最后3个地址空间,其存储地址需要为:
0x0807fffe,
0x0807fffc,
0x0807fffa,