1.擦除函数
FLASH_Status FLASH_ErasePage(u32 Page_Address)只要()里面的数是flash第××页中对应的任何一个地址即可擦除××页全部内容。
2.防止误擦除有用程序代码的方法
方法一:首先要计算程序代码有多少,把FLASH存取地址设置在程序代码以外的地方,这样就不会破坏用户程序。原则上从0x0800 0000+0x1000以后的FLASH空间都可以作为存储使用。如果代码量占了0x3000,那么存储在0x0800 0000+0x4000以后的空间就不会破坏程序了。
方法二:先在程序中定义一个const类型的常量数组,并指定其存储位置(方便找到写入、读取位置),这样编译器就会分配你指定的空间将常量数组存入FLASH中。当擦除和读写操作时,只要控制在这个常量数组所在的地址范围就好。
const uint8_t table[10]_at(0x08010000)={0x55};
MDK3.03A开始就支持关键字_at()。(https://www.daowen.com)
方法三:在程序中定义一个const类型的常量数组,无需指定其存储位置。只要定义一个32位的变量存储这个数组的FLASH区地址就行。
uint32_t address;//STM32的地址是32位的
const uint8_t imageBuffer[1024]={0,1,2,3,4,5,6,7};
address=(uint32_t)im ageBuffer;/用强制类型转换的方式,可以把FLASH中存储的imageBuffer[1024]的地址读到RAM中的变量address里,方便找到写入、读取位置/
3.内部Flash的读入过程
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。