STM32F1_片内FLASH编程
前言
今天总结“STM32F103 片内FLASH编程”,对于学习编程的人来说“FLASH”这个词肯定很熟悉,因为FLASH主要用于存储数据。对于STM32来说,内部FLASH的容量有大有小,从16K到2M不等,主要看芯片的型号。
对于刚从51或者430转入学习ARM-Cortex M芯片的人来说,可能只知道内部FLASH是拿来装载程序的,事实上Cortex M芯片内部FLASH的可以拿来编程的,而且还可以像外部FLASH一样存储数据。对,今天提供的工程就是使用内部FLASH像外部FLASH一样读写数据,而且不是块或者页编程(即不覆盖临近地址数据)。
在实际的开发中,内部FLASH存储数据也是很重要的一点,特别是一些不常修改,而且很重要的标志位,或者一些配置等,存储在内部FLASH是很常见的。但是,这个地址一定要避开程序储存的地址(我计划后期整理编程地址规范及要求)。
下载
今天提供下载的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘。
今天的软件工程下载地址(360云盘):
https://yunpan.cn/cRs8kq9Q5hQCS访问密码
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的芯片都适用。
最后
如果觉得内容适合你(如:内容易读易懂等),你又想了解更多相关内容,请关注公众号,新内容持续更新中,后期将会有更多优秀内容出现。
更多精彩文章我将第一时间在微信公众号里面分享,对本文有什么疑问可微信留言。
本着免费分享的原则,方便大家手机学习知识,定期在微信平台分享技术知识。如果你觉得分享的内容对你有用,又想了解更多相关的文章,请用微信搜索“EmbeddDeveloper” 或者扫描下面二维码、关注,将有更多精彩内容等着你。
阅读原文
STM32F1_片内FLASH编程相关推荐
- 使用 Trace32 对 FLASH 编程
from: http://www.ibm.com/developerworks/cn/linux/l-trace32/ 随着软硬件复杂性的增加,在嵌入式系统开发中,调试器对项目的开发进度.质量起着 ...
- flash读取程序 msp430_MSP430单片机对片内FLASH的读写操作程序范例
原标题:MSP430单片机对片内FLASH的读写操作程序范例 // 参数: wAddr 为地址 , 范围 0x1000~0xFFFF void ReadFlash(U16 wAddr,U8 *bBuf ...
- 【stm32f407】flash编程
一.Flash介绍 不同型号的STM32F40xx/41xx,其FLASH容量也有所不同,最小的只有128K字节,最大的则达到了1024K字节.STM32F4的FLASH容量为1024K字节,如参考手 ...
- 基于STM32F103C8T6片内Flash的音频播放(DAC通道)
基于STM32F103C8T6片内Flash的音频播放(DAC通道) 一.STM32的DAC通道介绍 1.DAC 简介 2.STM32中的DAC主要特点 3.DAC 功能框图剖析 4.DAC配置 二. ...
- 【Autosar 存储栈Memery Stack 4.Tc397的Flash编程】
首先我们要了解Autosar的存储模块介质主要是两种:EEPROM和Flash仿EEPROM,分为片内与片外存储,因此就有2*2=4种存储方式: 主芯片片内FLASH仿EEPROM 主芯片片内EEPR ...
- STM32L0芯片FLASH编程示例及提醒
关注+星标公众号,不错过精彩内容 来源 | 茶花MCU 这里就STM32L053芯片的FLASH编程做个简单演示并做些提醒,以供有需要的人参考. 一般来讲,FLASH编程主要包括擦除.代码编程.Opt ...
- Flash编程入门笔记
今天起开始学习Flash编程. 1.trace(): trace();是在flash测试影片时输出信息,例如想知道影片里的哪个变量的数值,就可以用它查看,方便我们知道变量的值是不是自己要的结果,方便调 ...
- 基于stm32片内Flash数据的DAC输出
stm32片内Flash的提示音播放 前言 一.DAC简介 二.使用DAC输出单周期的正弦波 三.PCM模块输出音频 前言 使用用Adobe audition音频编辑软件录制"您好欢迎光临! ...
- STM32F103基于片内flash的数据读取与音乐播放
目录 一.前言 二.题目要求 三.什么是片内flash 四.闪存的编程和擦除 五.基于flash的数据读取 1.工程创建 2.修改代码 3.烧录 4.调试 六.基于flash的提示音播放 1.生成正弦 ...
最新文章
- c++多元线性回归_五种优化算法实现多元线性回归
- ajax requestbody传值,ajax POST方法调用后@RequestBody属性为空
- Flutter 异常处理之图片篇
- es6 遍历数组对象获取所有的id_ES6对象遍历Object.keys()方法
- Android Adb 源码分析
- javascript中浅拷贝和深拷贝的理解
- 终于有人把用户画像的流程、方法讲明白了
- 最长公共子上升序列(信息学奥赛一本通-T1306)
- 指令重排序及Happens-before法则随笔
- Hive分区入门到精通
- nginx 支持HTTPS fdfs
- 全球最最可爱的的10种著名小型犬
- 2021-04-29:给定一个数组 arr,代表一排有分数的气球。每打爆一个气球都能获得分数,假设打爆气 球 的分数为 X,获得分数的规则如下: 1)如果被打爆气球的左边有没被打爆的气球,找到离被打爆
- 细致的网站开发流程有哪些呢?
- Pytnon画一个小猪佩奇
- 什么是嵌入式?你眼中的嵌入式是怎么样的?怎么学嵌入式?教你五分钟看懂嵌入式。
- iis7.0官方下载 IIS 7.0(微软Web服务器组件IIS 7.0) 官方(windows 2003,XP,2000)
- centos7启动服务uthorization not available. Check if polkit service is running or see debug message for
- ai人工智能相关职业_2020年及以后的5个人工智能最佳职业
- 跟着狂神老师配置Dubbo
热门文章
- 终于等到你,FATE v1.6已更新,五大模块迎来巨幅优化!
- 线性代数[矩阵的秩]
- 一万字详解C语言中长度为零的数组
- 连续信号积分 matlab程序,连续信号的微积分与卷积.ppt
- linux 硬件看门狗 软件看门狗,如何确定机器上是否实现了硬件或软件看门狗?...
- c++系列 —— 智能指针auto_ptr和unique_ptr
- DASCTF Sept X 浙江工业大学秋季挑战赛 部分wp
- Python笔记【八】
- 隧道股份“盾构云平台”试运行,年内将在上海全市范围推广
- mysql百万数据 查总数都特别慢_mysql百万级数据分页查询缓慢优化方法