200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > Flash地址空间的数据读取

Flash地址空间的数据读取

时间:2018-07-28 18:13:48

相关推荐

Flash地址空间的数据读取

目录

一、Flash原理二、创建STMcube工程1、选择芯片2、配置定时器3、打开外部时钟4、配置管脚5、设置堆栈大小三、在keil工程下的配置三、keil工程调试1、STlink连线说明2、keil配置3、调试四、参考链接

一、Flash原理

不同型号的 STM32,其 FLASH 容量也有所不同,最小的只有 16K 字节,最大的则达到了 1024K 字节。市面上 STM32F1 开发板使用的芯片是 STM32F103系列,其 FLASH 容量一般为 512K 字节,属于大容量芯片

Flash的编程原理都是只能将1写为0,而不能将0写为1,所以在进行Flash编程前,必须将对应的块擦除,即将该块的每一位都变为1,块内所有字节变为0xFF。

STM32F1 的闪存(Flash)模块:主存储器、信息块、闪存存储器接口寄存器

主存储器。该部分用来存放代码和数据常数(如 const 类型的数据)。对于大容量产品,其被划分为 256 页,每页 2K 字节。注意,小容量和中容量产品则每页只有 1K 字节。

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

闪存存储器接口寄存器。该部分用于控制闪存读写等,是整个闪存模块的控制机构。对主存储器和信息块的写入由内嵌的闪存编程/擦除控制器(FPEC)管理;编程与擦除的高电压由内部产生。

在执行闪存写操作时,任何对闪存的读操作都会锁住总线,在写操作完成后读操作才能正确地进行;既在进行写或擦除操作时,不能进行代码或数据的读取操作。

下图是Flash的一些主要特性:

二、创建STMcube工程

1、选择芯片

芯片就选择我们所用的STM32F103C8:

2、配置定时器

3、打开外部时钟

配置时钟:

4、配置管脚

对应外设c8t6本身设计好的PC13 LED灯:

5、设置堆栈大小

三、在keil工程下的配置

将事先准备好的flash.c 及flash.h加入到工程中:

添加代码如下图所示:

编译成功:

三、keil工程调试

1、STlink连线说明

接线:

在电脑上下载好响应的ST-Link驱动,上电,可以看到STLink在电脑上显示出来了,可以说明ST-Link 驱动已经安装完成。接下来只需要在 mdk 工程里面配置一下 ST-Link即可。

2、keil配置

点开魔法棒进行配置,在 Debug 选项卡中,选择ST-Link Debugger。

如果右侧IDCODE有显示的话就是连接成功了:

点击load下载程序到板子上:

3、调试

一直连接上板子然后进入debug,千万不要选择仿真调试,点击视图—>观测窗口—>随便选择一个窗口,紧接着在右下角的Memory1窗口中输入我们存储数据的地址0x0800C000,点击全速运行,可以看到板子上的PC13 LED亮起,然后Memory 1窗口中出现之前存储的数据,证明数据成功写入:

断电之后再次上电进行调试,可以看到上次写入的数据还在其中,证明已经将数据写入到flash中。

四、参考链接

STM32 进阶教程 13 – FLASH的读写操作

STM32内部Flash读写问题

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。