STM32F1_ 片内FLASH编程

前言
今天总结“stm32f103片内flash编程”,对于学习编程的人来说“flash”这个词肯定很熟悉,因为flash主要用于存储数据。对于stm32来说,内部flash的容量有大有小,从16k到2m不等,主要看芯片的型号。
对于刚从51或者430转入学习arm-cortex m芯片的人来说,可能只知道内部flash是拿来装载程序的,事实上cortex m芯片内部flash的可以拿来编程的,而且还可以像外部flash一样存储数据。对,今天提供的工程就是使用内部flash像外部flash一样读写数据,而且不是块或者页编程(即不覆盖临近地址数据)。
在实际的开发中,内部flash存储数据也是很重要的一点,特别是一些不常修改,而且很重要的标志位,或者一些配置等,存储在内部flash是很常见的。但是,这个地址一定要避开程序储存的地址(我计划后期整理编程地址规范及要求)。
每天总结的不仅仅是基础,而是重点,不起眼的重点,容易被人忽视的重点。关注微信公众号“embedddeveloper”还有更多精彩等着你。
下载
今天提供下载的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘。
今天的软件工程下载地址(360云盘):
https://yunpan.cn/csfa6h6kwu5jb访问密码 bc34
stm32f10x的资料可以在我360云盘下载:
https://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.c文件下面;
注意:
a.参数pbuffer是数据缓冲区,是16位的,而不是8位的。(其实这里可以整理为8位的,由于时间有限,如果有需要,请微信里回复我,我抽时间整理一下)。
b.参数长度也是16位的数量。
c.地址是内部flash地址,可别溢出了,也别和程序冲突。最好看看你的程序大小及芯片容量。
二、读函数接口
该函数位于flash.c文件下面;
注意的地方和上面写函数接口一样,主要是参数。
三、读写应用
该函数位于main.c文件下面;
蓝色表示读写标志位
红色表示读写数据
看一下就知道程序的流程是:“数据标志位”和“数据”都只写一次,而每次上电读一次标志位,再读数据。
这里的“数据标志位”地址就在“数据”前面。
四、今天的重点
重点a.页的大小:stm32f1小、中容量是1k,而大容量是2k,对于编程这里是有差异的。
重点b.stm32系列芯片中有很大一部分页的大小都是规则的,也就是说都是1k或许2k大小,学过其他系列芯片的人可能知道,在其他很多芯片中也有不是规则的,如stm32f4中基本都不是规则的(如下图f4芯片),有的一块16k、128k等不规则。这样的芯片对于今天提供的工程就不适用,今天提供工程适用于内部flash规则大小的芯片。
说明
今天提供的软件工程基于stm32f103大容量芯片,中等及小容量芯片也使用,只要修改flash.h文件一个宏(页大小就可以)。其实只要适当修改工程的部分配置,stm32f1的芯片都适用。

受新冠肺炎疫情的影响,智能终端产业在这场战“疫”中遭受到重创
SUV的强劲需求和安全优势促使特斯拉在中国迅速崛起
NES盒式外置硬盘的制作
自然语言分析诊断精神状态准确率高达83%
卫星通信v2 第七章 仿真与实战(2)传输体制文档
STM32F1_ 片内FLASH编程
2017年有望出台家用PM2.5测量仪校准规范
在MATLAB中调用Quartus SignalTap逻辑分析仪采集数据的方法
实现未来机器人的多样性!
EMC常见兼容问题及解决办法
华硕新显示器高达360Hz,需匹配更高性能的显卡
盘点近年半导体行业的争夺战
一文带您了解自耦变压器
乐筑智慧工地推动建筑行业信息化管理
微步进电机真的那么好吗?
浅析硅碳负极材料在锂离子电池中的应用
集成智能第2部分:电机启动开环加速
2023网络与边缘产业高层峰会:英特尔携行业伙伴解锁网络与边缘无限潜能
调用机智云API,实现网页控制物联网别踩白块游戏在STM32上同步显示
基于数字PLL和DSP的调频FM发射器架构研究