首页 > 其他分享 >7月1日 STM32F407VET6对Flash的入门学习(记录)

7月1日 STM32F407VET6对Flash的入门学习(记录)

时间:2024-07-01 14:27:35浏览次数:20  
标签:Flash HAL 入门 STM32F407VET6 FLASH 写入 擦除 uint32

1、Flash的使用之前必须对Flash进行擦除,不能直接写入进行覆盖。其原因是Flash的工作原理存储二进制的0和1,且只能实现从1到0的变化。这就意味着但Flash中已经烧入由0和1组成的文件后,无法直接再次烧入其他二进制文件。必须使用特定的函数将Flash中已存在的0和1全部转换成1,这个就是Flash的擦除。在将Flashj擦除后,Flash中全部显示为1,这是用户即可重新进行新文件的写入。

2、STM32对Flash的读写功能实现步骤(为以下流程图) 

3、使用函数的简单说明。

(1)HAL_FLASH_Unlock();

功能是解锁STM32的Flash区,这是擦除与写入的第一步。

(2)定义擦除结构体

typedef struct
{
  uint32_t TypeErase;  
  //TypeErase:
  //主要对应Falsh擦除的两种方式即扇擦除FLASH_TYPEERASE_SECTORS和块擦除 
  //FLASH_TYPEERASE_MASSERASE 
  uint32_t Banks;       
  //当选择使用块擦除时,想要擦除的块区域
  uint32_t Sector;     
 //当选择使用扇擦除时,想要擦除的扇区域
  uint32_t NbSectors;   、
  //当选择使用扇擦除时,想要擦除的扇数量
  uint32_t VoltageRange;
  //擦除时的电压范围,与擦除的速度有关
} FLASH_EraseInitTypeDef;

(3)HAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *SectorError)

擦除函数,对FLASH的指定内容进行擦除。第一个参数为前面定义的结构体,第二参数为0,具体为啥我也理解不太清除,功能是防止出错

(4)HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, addr, WriteFlashData);

功能为对flash进行写入,第一个参数为写入值得大小,第二个参数为写入值的FLASH地址,第三个参数为写入的值的内容

(5)HAL_FLASH_Lock();

锁住FLASH,防止写入与擦除

4、具体核心代码如下

对STM32F407VET6的最后一个扇区进行读写功能的实现,并通过串口打印出来。

 5、实验结果

实验成功

6、小结

本文对stm32F407vet6进行了简单的Flash配置与学习,后续可对Flash进一步的深入学习。在结构体那块,stm32f10系列不太一样,后续开发的时候需要注意!

标签:Flash,HAL,入门,STM32F407VET6,FLASH,写入,擦除,uint32
From: https://blog.csdn.net/qq_58159043/article/details/140093236

相关文章

  • ECharts 快速入门
    ECharts是一个由百度开源的基于JavaScript的数据可视化图表库,它提供了丰富的图表类型、交互功能和主题样式,方便用户快速创建各种数据可视化图表,并在商业和开源项目中广泛应用。本文内容根据ECharts官方文档整理。下面将介绍如何使用ECharts创建最常用的几种图表......
  • Batch入门学习
    前言Batch脚本是一种古老而又强大的脚本语言,自从MS-DOS时代开始就广泛应用于各种任务的自动化处理。尽管随着操作系统的进化和新技术的出现,Batch脚本的地位不如从前,但它依然是Windows系统管理和自动化任务中的重要工具。Batch脚本具有易学、轻量、灵活等特点,对于系统管理员......
  • STM32实战项目:从零打造GPS蓝牙自行车码表,掌握传感器、蓝牙、Flash存储等核心技术
    一、引言骑行,作为一项绿色健康的运动方式,越来越受到人们的喜爱。而记录骑行数据,分析速度、里程等信息,则成为了许多骑行爱好者的追求。本篇文章将带你使用STM32单片机,DIY一款功能完备的自行车码表,记录你的每一次骑行轨迹!二、功能概述本项目将实现以下功能:实时速度显示: 利......
  • 前端vue/react通用工程化eslint prettier stylelint husky项目规范(新手入门详细教程)
    前言本文章内的项目基于vite+react+ts搭建,但通篇并未涉及react的东西,所以可以通用。适合新手入门的工程化项目规范,最小化的完成代码规范和git提交规范,开发工具使用vscode。为什么是最小化?本意是为了让大家都能看懂入手这些规范,很多文章中,都长篇进行自定义的配置,其......
  • 全网最适合入门的面向对象编程教程:06 类和对象的Python实现-自定义类的数据封装
    全网最适合入门的面向对象编程教程:06类和对象的Python实现-自定义类的数据封装摘要:本文我们主要介绍了数据封装的基本概念和特性,如何设置自定义类的私有属性和私有方法,protect属性的概念和特点。往期推荐:学嵌入式的你,还不会面向对象??!全网最适合入门的面向对象编程教程:00......
  • java入门
    1.安装IntelliJIDEA,推荐使用JetbrainsToolbox 安装,没有特殊需求的话安装社区版即可2.安装Maven,参考该文章 https://www.cnblogs.com/winton-nfs/p/15998904.html3.安装JDK ,配置环境变量JAVA_HOMED:\Programs\jdk\jdk-8CLASSPATH.;%JAVA_HOME%\lib;%JAVA_HOME%\lib......
  • LLM大模型基础入门系列之:(四)从头开始编写LLM代码
    〔更多精彩AI内容,尽在「魔方AI空间」公众号,引领AIGC科技时代〕本文作者:猫先生引言本文是LLM基础入门系列的第4篇。在本文中,我们将从头开始实现一个类GPT的transformer。将按照上一篇文章中《LLM大模型基础入门系列之:(三)Transformer架构》描述的步骤对每个部分......
  • 深入了解TinyMCE的使用:从入门到精通
    目录TinyMCE简介安装和集成通过CDN集成通过NPM安装本地安装基本配置初始化编辑器配置工具栏配置菜单高级配置插件的使用自定义样式和主题文件上传和管理事件处理与API事件监听API调用最佳实践性能优化安全性总结TinyMCE简介TinyMCE是一款功能强大的开源富文本......
  • 【python零基础入门到就业】002、2024最新windows环境下python的下载和安装
    文章目录1.引言2.检查是否已安装Python3.在Windows上安装Python3.1下载Python安装包3.2安装Python3.3验证安装4.结语1.引言在开始编写Python代码之前,我们首先需要在计算机上安装Python。本文将详细介绍如何在Windows系统上下载和安装Python。2......
  • [QT入门]信号与槽
    一、什么是信号与槽?在Qt框架中,信号与槽(SignalandSlot)机制是其核心特性之一,它提供了一种高效且安全的方式来处理对象之间的通信。信号与槽机制基于观察者模式,允许一个对象(信号发出者)在特定事件发生时通知另一个或多个对象(槽接收者)。二、概念详解1.信号(Signal)信号是Qt对象......