stm32自带内置flash,我对内置flash研究不多,曾试过隔2k内还是一块,不明原因。
stm32的FLASH分为主存储块和信息块。主存储块用于保存具体的程序代码和用户数据,信息块用于负责由stm32出厂是放置2KB的启动程序(Bootloader)和512B的用户配置信息区。
主存储块是以页为单位划分的,一页大小为1KB。范围为从地址0x08000000开始的128KB内。
对Flash 的写入操作要 “先擦除后写入”的原则;
stm32的内置flash 编程操作都是以页为单位写入的,而写入的操作必须要以16位半字宽度数据位单位,允许跨页写,写入非16位数据时将导致stm32内部总线错误。
进行内置flash读写时,必须要打开内部Rc振荡器。
下面是我用到的网络上的一个例子,改一下就可以用了:
#define FLASH_ADR 0x08008000 //要写入数据的地址
union union_temp16
{
unsigned int un_temp16;
unsigned char un_temp8[2]; // example 16: 0x0102 8:[0]2 [1]1
}my_unTemp16;
configStruct myConf =
{
"cmnet",
"\0",
"\0",
"201.2.2.2",
"9002",
{