0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32F1_ 片内FLASH编程

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-04-08 10:28 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前言

今天总结“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的芯片都适用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FlaSh
    +关注

    关注

    10

    文章

    1762

    浏览量

    156113
  • STM32F103
    +关注

    关注

    34

    文章

    499

    浏览量

    68358
  • STM32F10
    +关注

    关注

    0

    文章

    49

    浏览量

    16347
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    深入剖析STM32W108C8:高性能IEEE 802.15.4无线上系统

    深入剖析STM32W108C8:高性能IEEE 802.15.4无线上系统 在当今的电子设计领域,无线通信技术的发展日新月异。对于工程师而言,选择一款合适的无线上系统(SoC)至关重要。今天
    的头像 发表于 04-17 15:25 236次阅读

    C8051F330/1/2/3/4/5系列MCU:混合信号ISP Flash MCU的卓越之选

    C8051F330/1/2/3/4/5系列MCU:混合信号ISP Flash MCU的卓越之选 在电子设计领域,选择一款合适的微控制器(MCU)对于项目的成功至关重要。C8051F33
    的头像 发表于 04-15 11:30 256次阅读

    C8051F320/1:高速USB、16k ISP FLASH MCU家族的卓越之选

    C8051F320/1:高速USB、16k ISP FLASH MCU家族的卓越之选 在电子工程师的设计世界里,选择一款合适的微控制器(MCU)至关重要。今天,我们就来深入了解一下C8051F
    的头像 发表于 04-15 11:20 280次阅读

    深入解析C8051F120/1/2/3/4/5/6/7系列8K ISP FLASH MCU

    : C8051F120.pdf 一、系统概述 C8051F120/1/2/3/4/5/6/7系列MCU基于高速8051 μC核心,采用流水线指令架构,能在1或2个系统时钟
    的头像 发表于 04-15 11:05 404次阅读

    PIC18FXX80/XX85 Flash微控制器编程规范解析

    /XX85系列Flash微控制器的编程规范。 文件下载: PIC18F6585-I/L.pdf 一、设备概述 PIC18FXX80/XX85系列包含了PIC18F6585、PIC18
    的头像 发表于 04-08 10:35 260次阅读

    CW32F030FLASH闪存存储器物理区域的划分

    FLASH 闪存由两部分物理区域组成:主 FLASH 存储器和启动程序存储器。 1、主 FLASH 存储器,共 64KB,地址空间为
    发表于 12-23 08:28

    STM32C011开发(3)----Flash操作

    STM32C011 系列微控制器内置 Flash 存储器,支持程序存储与数据保存,具备页面擦除、双字写入、读写保护等功能。本文将简要介绍 STM32C011 的 Flash 结构与特性
    的头像 发表于 09-18 16:48 5415次阅读
    <b class='flag-5'>STM32</b>C011开发(3)----<b class='flag-5'>Flash</b>操作

    【教程】使用STM32F4进行E22-400T22S编程通信教程

    通过本文带大家零基础使用STM32F407VET6单片机进行E22-400T22S模块编程并进行简单的通信,当然如果学会了,也可以举一反三应用于E22、E220、E32所有模块上。一、STM32环境
    的头像 发表于 08-28 19:32 2619次阅读
    【教程】使用<b class='flag-5'>STM32F</b>4进行E22-400T22S<b class='flag-5'>编程</b>通信教程

    TLE9893是否支持在FLASH1上运行代码来擦除和编程FLASH1

    芯片TLE9893是否支持在FLASH1上运行代码来擦除和编程FLASH1。在NVM-PROG_UCODE中,代码在FLASH1上运行,并将数据写入
    发表于 08-13 08:14

    FLASH烧写/编程白皮书

    白皮书:如何烧写Flash——不同场景不同需求下的选择认识Flash NAND vs. NOR如何烧写/编程不同方案比较
    发表于 07-28 16:05 0次下载

    STM32F103c8上做DLQR最优控制算法的C编程资料

    这是我近期做的一个项目--基于STM32F103c8的DLQR控制算法的C编程,涉及DLQR最优控制算法、嵌入式STM32F103编程、CMSIS-DSP库使用。    附有完整的程序
    发表于 07-23 15:30 0次下载

    STM32F10xxx参考手册

    STM32F1XX数据手册中文版
    发表于 07-10 16:09 10次下载

    STM32F103RET6 FLASH擦除失败的原因?怎么解决?

    MCU是STM32F103RET6,512K大容量型,我现在程序进行掉电存储,用到的地址是第224页到254页,共60kb,芯片上电后第一次擦除是成功的,然后写入一次数据,再读出数据是对的,之后
    发表于 07-10 06:40

    STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4编程手册

    电子发烧友网站提供《STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4编程手册.pdf》资料
    发表于 06-06 17:06 17次下载

    STM32F40xxx和STM32f41xx flash编程手册

    PM0081_STM32F40xxx and STM32F41xxx单片机编程手册
    发表于 06-06 17:02 8次下载