你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F1_片内FLASH编程

[复制链接]
ybhuangfugui 提问时间:2016-5-20 00:00 /
前言
今天总结“STM32F103 片内FLASH编程”,对于学习编程的人来说“FLASH”这个词肯定很熟悉,因为FLASH主要用于存储数据。对于STM32来说,内部FLASH的容量有大有小,从16K到2M不等,主要看芯片的型号。
对于刚从51或者430转入学习ARM-Cortex M芯片的人来说,可能只知道内部FLASH是拿来装载程序的,事实上Cortex M芯片内部FLASH的可以拿来编程的,而且还可以像外部FLASH一样存储数据。对,今天提供的工程就是使用内部FLASH像外部FLASH一样读写数据,而且不是块或者页编程(即不覆盖临近地址数据)。
在实际的开发中,内部FLASH存储数据也是很重要的一点,特别是一些不常修改,而且很重要的标志位,或者一些配置等,存储在内部FLASH是很常见的。但是,这个地址一定要避开程序储存的地址(我计划后期整理编程地址规范及要求)。


本着免费分享的原则,将总结的工程源代码分享给大家,还望看到的朋友关注一下微信公众号,并将文章分享给你的朋友。

下载
今天提供下载的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘。

今天的软件工程下载地址(360云盘):

STM32F10x的资料可以在我360云盘下载:
http://yunpan.cn/crBUdUGdYKam2   访问密码 ca90

内容讲解
工程概要说明: 提供工程的源代码主要就是两个接口,一个写,一个读。
void FLASH_WriteNWord(uint16_t* pBuffer, uint32_t WriteAddr, uint16_t nWord);
void FLASH_ReadNWord(uint16_t* pBuffer, uint32_t ReadAddr, uint16_t nWord);
相信经常编程的人都明白函数接口的意思(我的命名规则还是算比较人性化的),就是和常见的访问外部FLASH一样,不会覆盖数据,我已经在实际工作中应用而且商业化了。
主要在地址“ADDR”处写一个标志位,在地址“ADDR + 1”连续写一串数据。如果标志位已经是“写过”,则不会再次写入数据,只会读取数据,意思就是说数据只写一次,以后每次只是读取数据(就是保证掉电后数据会不会丢失)。每次读取数据,通过串口打印出以前写入的数据是否正确。

提供的工程以简单为原则,详细中文注释,方便自己方便大家。

关于“STM32F103  片内FLASH编程” 我把重要的几点在下面分别讲述:
一、写函数接口
片上FLASH编程1.png
该函数位于flash.c文件下面;
注意:
A.参数pBuffer是数据缓冲区,是16位的,而不是8位的。(其实这里可以整理为8位的,由于时间有限,如果有需要,请微信里回复我,我抽时间整理一下)。
B.参数长度也是16位的数量。
C.地址是内部FLASH地址,可别溢出了,也别和程序冲突。最好看看你的程序大小及芯片容量。

二、读函数接口
片上FLASH编程2.png
该函数位于flash.c文件下面;
注意的地方和上面写函数接口一样,主要是参数。

三、读写应用
片上FLASH编程3.png
片上FLASH编程4.png
该函数位于main.c文件下面;
蓝色表示读写标志位
红色表示读写数据
看一下就知道程序的流程是:“数据标志位”和“数据”都只写一次,而每次上电读一次标志位,再读数据。
这里的“数据标志位”地址就在“数据”前面。
四、今天的重点
片上FLASH编程5.png
片上FLASH编程6.png
重点A.页的大小:STM32F1小、中容量是1K,而大容量是2K,对于编程这里是有差异的。
重点B.STM32系列芯片中有很大一部分页的大小都是规则的,也就是说都是1K或许2K大小,学过其他系列芯片的人可能知道,在其他很多芯片中也有不是规则的,如STM32F4中基本都不是规则的(如下图F4芯片),有的一块16K128K等不规则。这样的芯片对于今天提供的工程就不适用,今天提供工程适用于内部FLASH规则大小的芯片。
片上FLASH编程7.png
说明
今天提供的软件工程基于STM32F103大容量芯片,中等及小容量芯片也使用,只要修改flash.h文件一个宏(页大小就可以)。其实只要适当修改工程的部分配置,STM32F1的芯片都适用。
最后
如果觉得内容适合你(如:内容易读易懂等),你又想了解更多相关内容,请关注公众号,新内容持续更新中,后期将会有更多优秀内容出现。

赞是一种鼓励、分享是最好的支持!


阅读原文

评分

参与人数 1 ST金币 +2 收起 理由
hujjj + 2 很好,正是我需要的。

查看全部评分

1 收藏 3 评论2 发布时间:2016-5-20 00:00

举报

2个回答
xmshao 回答时间:2016-5-20 08:14:53
一个关于STM32 FLASH编程应用相关的话题
http://mp.weixin.qq.com/s?__biz= ... c4f5590a583cbb6f#rd
老牛洋车 回答时间:2019-1-8 22:03:22
学习了,不过云盘地址已经失效,没有下载到代码。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版