STM32的Flash地址空间的数据读取

目录

一、STM32内部FLASH地址简介

二、Flash地址空间的数据读取

1.CubeMX创建工程

2.工程代码修改

3.调试前配置

4.硬件连接 

5.调试 

三、总结 

四、参考资料


一、STM32内部FLASH地址简介

在 STM32 芯片内部有一个 FLASH 存储器,它主要用于存储代码,我们在电脑上编写 好应用程序后,使用下载器把编译后的代码文件烧录到该内部 FLASH 中,由于 FLASH 存 储器的内容在掉电后不会丢失,芯片重新上电复位后,内核可从内部 FLASH 中加载代码并 运行,见图

图 STM32 的内部框架图

除了使用外部的工具(如下载器)读写内部 FLASH 外,STM32 芯片在运行的时候, 也能对自身的内部 FLASH 进行读写,因此,若内部 FLASH 存储了应用程序后还有剩余的 空间,我们可以把它像外部 SPI-FLASH 那样利用起来,存储一些程序运行时产生的需要掉 电保存的数据。

由于访问内部 FLASH 的速度要比外部的 SPI-FLASH 快得多,所以在紧急状态下常常 会使用内部 FLASH 存储关键记录;为了防止应用程序被抄袭,有的应用会禁止读写内部 FLASH 中的内容,或者在第一次运行时计算加密信息并记录到某些区域,然后删除自身的 部分加密代码,这些应用都涉及到内部 FLASH 的操作。

二、Flash地址空间的数据读取

1.CubeMX创建工程

选择stm32f103c8芯片后,配置SYS

配置RCC

配置引脚

 配置时钟树

中断配置

调整堆栈大小

2.工程代码修改

工程源码

提取码:pmvn

将工程源码中的flash.c和flash.h加入到工程中(flash.h文件放在INC文件夹下即可)

 在main.c中添加代码

3.调试前配置

打开魔法棒,点击Debug,选择ST-Link Debugger、

点击Settings,选择Debug页面,其中Port选择SW

选择Flash Download,设置如下图

4.硬件连接 

连接硬件ST-Link,需要下载STLink驱动

STLink驱动

提取码:07tq

硬件连接如下图:

5.调试 

点击,将程序下载到STM32中,结果如下图

点击,进入调试 

点击View->memory windows->memory1,打开内存观察窗口

 在地址栏中输入0x800C000,观察FLASH区间内容

点击鼠标右键选择显示格式

点击View->Watch?windows->memory1,打开变量观察窗口

将变量FlashWBuff和FlashRBuff加入到Watch1观察窗口

点击View,勾选Periodic Windows Update,开启变量自动更新

全速运行,这时候就会看到Watch1窗口中?FlashWBuff,FlashRBuff中的内容全部变的一样

在Memory1窗口中可以看到在FLASH地址0x0800C000成功写入内容

断电后在重新接电调试,可以发现程序停在main函数入口处时还可以看到Flash对应区间的内容保持上一次写入内容值。

三、总结 

此次实验最大的阻碍就是,好几次当我快要写完博客时,sb csdn突然抽风搞得我之前写的东西都没了,只能重写,2021年最后一天心态全无。

四、参考资料

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值