stm32f103zet6如何识别flash大小.doc
《stm32f103zet6如何识别flash大小.doc》由会员分享,可在线阅读,更多相关《stm32f103zet6如何识别flash大小.doc(4页珍藏版)》请在三一文库上搜索。
1、stm32f103zet6如何识别flash大小在我们应用开发时,经常会有一些程序运行参数需要保存,如一些修正系数。这些数据的特点是:数量少而且不需要经常修改,但又不能定义为常量,因为每台设备可能不一样而且在以后还有修改的可能。将这类数据存在指定的位置,需要修改时直接修改存储位置的数值,需要使用时则直接读取,会是一种方便的做法。考虑到这些数据量比较少,使用专门的存储单元既不经济,也没有必要,而STM32F103内部的Flash容量较大,而且ST的库函数中还提供了基本的Flash操作函数,实现起来也比较方便。以大容量产品STM32F103ZET为例,其Flash容量达到512K,可以将其中一部分
2、用作数据存储。如下是大容量的Flash组织模式:STM32的闪存模块由:主存储器、信息块和闪存存储器接口寄存器等 3 部分组成。1)主存储器,该部分用来存放代码和数据常数(如 const 类型的数据)。对于大容量产品,其被划分为 256 页,每页 2K 字节。注意,小容量和中容量产品则每页只有 1K 字节。从上图可以看出主存储器的起始地址就是0X08000000, B0、B1 都接 GND 的时候,就是从 0X08000000开始运行代码的。2)信息块,该部分分为 2 个小部分,其中启动程序代码,是用来存储 ST 自带的启动程序,用于串口下载代码,当 B0 接 V3.3,B1 接 GND 的时
3、候,运行的就是这部分代码。用户选择字节,则一般用于配置写保护、读保护等功能,本章不作介绍。3)闪存存储器接口寄存器,该部分用于控制闪存读写等,是整个闪存模块的控制机构。对主存储器和信息块的写入由内嵌的闪存编程/擦除控制器(FPEC)管理;编程与擦除的高电压由内部产生。在执行闪存写操作时,任何对闪存的读操作都会锁住总线,在写操作完成后读操作才能正确地进行;既在进行写或擦除操作时,不能进行代码或数据的读取操作。根据上面的Flash组织模式,我们可以根据自己的使用方便来作相应的定义。因为大容量每个扇区定义为2K,而小容量和中容量都定义为1K,所以我们做如下宏定义:#define FLASH_SIZE
4、 512 /所选MCU的FLASH容量大小(单位为K)#if FLASH_SIZE256#define SECTOR_SIZE 1024 /字节#else#define SECTOR_SIZE 2048 /字节#endif虽然ST的库函数比较全面,但都是基本操作,为了使用方面,根据我们自己的需要对其进行再次封装。对于读操作相对比较简单,内置闪存模块可以在通用地址空间直接寻址,就像读取变量一样。/从指定地址开始读取多个数据void FLASH_ReadMoreData(uint32_t startAddress,uint16_t *readData,uint16_t countToRead)ui
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- stm32f103zet6 如何 识别 flash 大小
链接地址:https://www.31doc.com/p-3273504.html