硬件设备:STM32F10C8T6最小系统板、ST-LINK
软件设备:Keil5
一、下载源码
本次实验所用工程是参考STM32 进阶教程 13 – FLASH的读写操作这篇博客完成的,可仿照博文中使用STM32Cube创建工程文件,也可以直接下载源码进行验证操作。
源码连接:
链接:https://pan.baidu.com/s/1QkHq2Den14Fpez5BPGRUgg
提取码:7z0w
注意,如果仿照参考博文中建立工程,会有一个报错,需要更改一个文件名的后缀,路径及修改后的名称如下所示:
二、工程配置
- ST-LINK 驱动下载 链接:
链接:https://pan.baidu.com/s/18BgktVHtBizU51lwG1XF3g
提取码:vg0m
成功安装后可在 设备管理器 中找到驱动详情;
- 连接上ST-LINK与STM32最小核心板,打开Keil工程,点击魔术棒进入工程配置;
- 在Debug页面,勾选Use中的
ST-Link Debugger
,再进入Settings
;
- 在Debug中,Port选择
SW
;
- 切换到Flash Download界面,勾选
Reset and Run
,点击Add,添加第一个STM32F10x Med-density Flash
;
- 点击确定,退出配置
三、调试结果
-
回到主页面,编译无误;
-
点击Debug进行仿真调试;
调试结果如下所示;
-
在View->Memory Windows选中一个
Memory
添加到主页面;
-
在地址栏中输入0x800c000,观察将要修改的flash区间区容;
-
在View->Watch Windows选中一个
Watch
添加到主页面;
可以看到 **FlashWBuff 和 FlashRBuff **两个变量;
-
勾选View->Periodic Windows Update开启变量自动更新;
-
按下
F5
,全速运行程序,可以看到数组 FlashRBuff 中内容与数组 FlashWBuff 中内容一样了,这里再添加了一个Watch2窗口,方便比对;
-
同时可以在Memory 1窗口中看到在FLASH地址0x0800C000区成功写入对应内容:
具体代码位置如下所示:
四、分析总结
通过验证flash地址空间的读写,安装ST-LINK的驱动和相关配置,验证了写入数据的正确性和读写速率。实验操作并不困难,若是之前有安装过驱动就更容易上手啦!查阅资料发现C8T6应当是LQFP48封装的64k内部FLASH的MCU,但是在使用中发现,我们是可以对超过64K字节的FLASH空间进行读写的,而且MDK默认的下载算法也是针对128K
FLASH的。