stm32闪存的理解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/WZJwzj123456/article/details/52800746

STM32f1xxx的闪存模块由:主存储器、信息块和闪存存储器接口寄存器等3部分组成。

各个部分的大小因不同型号有一定的差异,数据手册中可以看到

小容量产品主存储块1-32KB,每页1KB。系统存储器2KB

中容量产品主存储块64-128KB,每页1KB。系统存储器2KB

大容量产品主存储块256KB以上,每页2KB。系统存储器2KB


主存储器:该部分用来存放代码和数据常数(如const类型的数据)。对于大容量产品,其被划分为256页,每页2K字节。注意,小容量和中容量产品则每页只有1K字节。从上图     可以看出主存储器的起始地址就是0X08000000, B0、B1都接GND的时候,就是从0X08000000开始运行代码的。

信息块:该部分分为2个小部分,其中启动程序代码,是用来存储ST自带的启动程序,用于串口下载代码,当B0接V3.3,B1接GND的时候,运行的就是这部分代码。用户选择字                   节,则一般用于配置写保护、读保护等功能

闪存存储器接口寄存器:该部分用于控制闪存读写等,是整个闪存模块的控制机构。


在进行内部flash模仿eeprom时可以操作主存储器部分的空间,程序代码占一部分,留下一部分用于存储你想要存储的信息,只是模拟的eeprom的读写操作还是要遵循flash的操作方法,另外还需要注意stm32闪存操作的流程注意事项

 FLASH_Unlock();//解锁

 FLASH_ClearFlag(FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPRTERR);//清楚标志

 FLASH_ErasePage(0x8002000);//擦除

 while(count < 5)
 {
  FLASH_ProgramHalfWord((0x8002000 +count*2),data[count]);  //flash  为一个字节存储,16位数据必须地址加2

  count++;
 
 }

 FLASH_Lock();//加锁




猜你喜欢

转载自blog.csdn.net/WZJwzj123456/article/details/52800746