理论教育 STM32单片机内部Flash擦除过程考察结果

STM32单片机内部Flash擦除过程考察结果

更新时间:2025-09-11 理论教育 版权反馈
【摘要】:uint32_t address;//STM32的地址是32位的const uint8_t imageBuffer[1024]={0,1,2,3,4,5,6,7};address=im ageBuffer;/*用强制类型转换的方式,可以把FLASH中存储的imageBuffer[1024]的地址读到RAM中的变量address里,方便找到写入、读取位置*/3.内部Flash的读入过程

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的读入过程

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈