前言

今天总结“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芯片),有的一块16K128K等不规则。这样的芯片对于今天提供的工程就不适用,今天提供工程适用于内部FLASH规则大小的芯片。

说明

今天提供的软件工程基于STM32F103大容量芯片,中等及小容量芯片也使用,只要修改flash.h文件一个宏(页大小就可以)。其实只要适当修改工程的部分配置,STM32F1的芯片都适用。

最后

如果觉得内容适合你(如:内容易读易懂等),你又想了解更多相关内容,请关注公众号,新内容持续更新中,后期将会有更多优秀内容出现。

更多精彩文章我将第一时间在微信公众号里面分享,对本文有什么疑问可微信留言。

本着免费分享的原则,方便大家手机学习知识,定期在微信平台分享技术知识。如果你觉得分享的内容对你有用,又想了解更多相关的文章,请用微信搜索“EmbeddDeveloper” 或者扫描下面二维码、关注,将有更多精彩内容等着你。

阅读原文

STM32F1_片内FLASH编程相关推荐

  1. 使用 Trace32 对 FLASH 编程

    from:   http://www.ibm.com/developerworks/cn/linux/l-trace32/ 随着软硬件复杂性的增加,在嵌入式系统开发中,调试器对项目的开发进度.质量起着 ...

  2. flash读取程序 msp430_MSP430单片机对片内FLASH的读写操作程序范例

    原标题:MSP430单片机对片内FLASH的读写操作程序范例 // 参数: wAddr 为地址 , 范围 0x1000~0xFFFF void ReadFlash(U16 wAddr,U8 *bBuf ...

  3. 【stm32f407】flash编程

    一.Flash介绍 不同型号的STM32F40xx/41xx,其FLASH容量也有所不同,最小的只有128K字节,最大的则达到了1024K字节.STM32F4的FLASH容量为1024K字节,如参考手 ...

  4. 基于STM32F103C8T6片内Flash的音频播放(DAC通道)

    基于STM32F103C8T6片内Flash的音频播放(DAC通道) 一.STM32的DAC通道介绍 1.DAC 简介 2.STM32中的DAC主要特点 3.DAC 功能框图剖析 4.DAC配置 二. ...

  5. 【Autosar 存储栈Memery Stack 4.Tc397的Flash编程】

    首先我们要了解Autosar的存储模块介质主要是两种:EEPROM和Flash仿EEPROM,分为片内与片外存储,因此就有2*2=4种存储方式: 主芯片片内FLASH仿EEPROM 主芯片片内EEPR ...

  6. STM32L0芯片FLASH编程示例及提醒

    关注+星标公众号,不错过精彩内容 来源 | 茶花MCU 这里就STM32L053芯片的FLASH编程做个简单演示并做些提醒,以供有需要的人参考. 一般来讲,FLASH编程主要包括擦除.代码编程.Opt ...

  7. Flash编程入门笔记

    今天起开始学习Flash编程. 1.trace(): trace();是在flash测试影片时输出信息,例如想知道影片里的哪个变量的数值,就可以用它查看,方便我们知道变量的值是不是自己要的结果,方便调 ...

  8. 基于stm32片内Flash数据的DAC输出

    stm32片内Flash的提示音播放 前言 一.DAC简介 二.使用DAC输出单周期的正弦波 三.PCM模块输出音频 前言 使用用Adobe audition音频编辑软件录制"您好欢迎光临! ...

  9. STM32F103基于片内flash的数据读取与音乐播放

    目录 一.前言 二.题目要求 三.什么是片内flash 四.闪存的编程和擦除 五.基于flash的数据读取 1.工程创建 2.修改代码 3.烧录 4.调试 六.基于flash的提示音播放 1.生成正弦 ...

最新文章

  1. c++多元线性回归_五种优化算法实现多元线性回归
  2. ajax requestbody传值,ajax POST方法调用后@RequestBody属性为空
  3. Flutter 异常处理之图片篇
  4. es6 遍历数组对象获取所有的id_ES6对象遍历Object.keys()方法
  5. Android Adb 源码分析
  6. javascript中浅拷贝和深拷贝的理解
  7. 终于有人把用户画像的流程、方法讲明白了
  8. 最长公共子上升序列(信息学奥赛一本通-T1306)
  9. 指令重排序及Happens-before法则随笔
  10. Hive分区入门到精通
  11. nginx 支持HTTPS fdfs
  12. 全球最最可爱的的10种著名小型犬
  13. 2021-04-29:给定一个数组 arr,代表一排有分数的气球。每打爆一个气球都能获得分数,假设打爆气 球 的分数为 X,获得分数的规则如下: 1)如果被打爆气球的左边有没被打爆的气球,找到离被打爆
  14. 细致的网站开发流程有哪些呢?
  15. Pytnon画一个小猪佩奇
  16. 什么是嵌入式?你眼中的嵌入式是怎么样的?怎么学嵌入式?教你五分钟看懂嵌入式。
  17. iis7.0官方下载 IIS 7.0(微软Web服务器组件IIS 7.0) 官方(windows 2003,XP,2000)
  18. centos7启动服务uthorization not available. Check if polkit service is running or see debug message for
  19. ai人工智能相关职业_2020年及以后的5个人工智能最佳职业
  20. 跟着狂神老师配置Dubbo

热门文章

  1. 终于等到你,FATE v1.6已更新,五大模块迎来巨幅优化!
  2. 线性代数[矩阵的秩]
  3. 一万字详解C语言中长度为零的数组
  4. 连续信号积分 matlab程序,连续信号的微积分与卷积.ppt
  5. linux 硬件看门狗 软件看门狗,如何确定机器上是否实现了硬件或软件看门狗?...
  6. c++系列 —— 智能指针auto_ptr和unique_ptr
  7. DASCTF Sept X 浙江工业大学秋季挑战赛 部分wp
  8. Python笔记【八】
  9. 隧道股份“盾构云平台”试运行,年内将在上海全市范围推广
  10. mysql百万数据 查总数都特别慢_mysql百万级数据分页查询缓慢优化方法