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

查看: 6390|回复: 2

STM32F1_片内FLASH编程

[复制链接]

49

主题

19

回帖

0

蝴蝶豆

金牌会员

最后登录
2019-2-16
发表于 2016-5-20 00:00:21 | 显示全部楼层 |阅读模式
前言
今天总结“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的芯片都适用。
最后
如果觉得内容适合你(如:内容易读易懂等),你又想了解更多相关内容,请关注公众号,新内容持续更新中,后期将会有更多优秀内容出现。

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


阅读原文

评分

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

查看全部评分

<
回复

使用道具 举报

10

主题

792

回帖

271

蝴蝶豆

版主

最后登录
2020-11-30
发表于 2016-5-20 08:14:53 | 显示全部楼层
一个关于STM32 FLASH编程应用相关的话题
http://mp.weixin.qq.com/s?__biz= ... c4f5590a583cbb6f#rd
回复 支持 1 反对 0

使用道具 举报

19

主题

962

回帖

59

蝴蝶豆

论坛元老

最后登录
2020-12-9
发表于 2019-1-8 22:03:22 | 显示全部楼层
学习了,不过云盘地址已经失效,没有下载到代码。
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版