[STM32-HAL库]Flash库-HAL库-复杂数据读写-STM32CUBEMX开发-HAL库开发系列-主控STM32F103C6T6
📅 2026/7/30 17:26:25
👁️ 次浏览
目录一、前言二、实现步骤1.STM32CUBEMX配置2.导入Flash库3.分析地址范围4.找到可用的地址5.写入读取普通数据6.写入读取字符串6.1 存储相关信息6.2 存取多个参数三、总结及源码一、前言在面对需要持久化存储的数据时除了挂载TF卡我们能用到的最方便的方法就是将数据粗存入Flash比如存储密码、存储记录等。本文中的Flash库由我开发具有存取和写出各类型数据和字符串的功能。二、实现步骤1.STM32CUBEMX配置此处正常配置相关参数本文使用STM32F103C6T6时钟频率为72MHzFlash操作无需配置其他参数。2.导入Flash库下载并解压压缩包可以得到一个.c文件和.h文件将其导入到工程中此处简单就不再赘述不会的话可以看之前的文章。3.分析地址范围要写入Flash我们必须知道要写入的内存地址以STM32F103C8T6为例依照下图的命名规则可知其Flash大小为64K根据计算64*1024-165535其对应的十六进制是0xFFFF加上起始地址0x0800 0000可知其Flash地址范围为0x0800 0000-0x0800 FFFF在实际开发中如果我们使用了不同的芯片比如本文使用STM32F103C6T6那么其地址范围也不同其地址范围是0x0800 0000~0x0800 7FFF如果我们向0x0800 E000去写入数据那必然不会成功读取亦然。4.找到可用的地址其实即使我们分析出地址范围是0x0800 0000~0x0800 7FFF但这里边的地址并非全部可用的比如程序编译后如下图烧写进去是会占用一部分地址的因此你需要把考虑进去本文就不做论述了有兴趣可以去其他地方查一查如果有时间我也会出一篇文章说一下这个部分。5.写入读取普通数据打开flash.h可以看到我封装了很多函数。当然还有一部分数据分割代码这个稍后再介绍。从声明中我们可以知道如何存储和读取uint8、uint16类型的数据。写入并读取uint8_t类型数据。uint8_t data_1A; Earse_Page(0x08006000,1);//擦除 Write_uint8(0x08006000,data_1); data_1Read_uint8(0x08006000);6.写入读取字符串6.1 存储相关信息本库完成了对字符串的读写操作以地址0x0800 7000为例写入字符串“ABC”并读取出来。uint8_t data[50]; memset(data,\0,50); sprintf((char *)data,ABC\n); STMFLASH_Write(0x08007000,data,50); memset(data,\0,50); STMFLASH_Read(0x08007000,data,50); HAL_UART_Transmit(huart1,data,50,1000);6.2 存取多个参数通过这种办法其实我们可以一次存取多个参数信息例如我将生成四个float类型的参数将其转换成字符串其中以固定字符分割随后每次启动时从flash读取字符串并进行数据分割即可实现去除数据的效果这段代码就是头文件最后的数据分割代码。//存取多个参数 memset(data,\0,50); sprintf((char *)data,%.2f,%.2f,%.2f,%.2f,temp,hum,water,ch4); STMFLASH_Write(0x08007000,data,50); STMFLASH_Read(0x08007000,data,50); tempatof(strtok((char *)data,,)); humatof(strtok(NULL,,)); wateratof(strtok(NULL,,)); ch4atof(strtok(NULL,,)); sprintf((char *)data,%.2f,%.2f,%.2f,%.2f,temp,hum,water,ch4); HAL_UART_Transmit(huart1,data,50,1000);三、总结及源码文章至此已经完成Flash的各类操作需要注意的是存储单个类型的数据时需要先执行擦除操作不擦除无法写入。而存储字符串时不需要因为在字符串函数内我已经写了擦除函数直接调用即可。同时本文也通过字符串读写为大家提供了一种存储参数的方案。库文件Flash-HAL库文件-字符串读写本文工程Flash-HAL库-STM32CUBEMX工程
如何构建企业级本地语音合成系统:从ChatTTS-ui架构到部署实战 【免费下载链接】ChatTTS-ui 一个简单的本地网页界面,使用ChatTTS将文字合成为语音,同时支持对外提供API接口。A simple native web interface that uses ChatTTS to synthesize …
📅 2026/7/30 17:26:25
基于E9的统一待办集成——使用消息队列配置背景与挑战
随着企业信息化建设不断深化,接入统一待办平台的第三方异构系统从最初的 3个激增至15个。作为统一待办集成枢纽,原同步 RESTful 接口在业务高峰期(如月末集中审批)遭遇了严重…
📅 2026/7/30 17:26:25
1. 项目背景与核心价值民航乘机管理系统是航空运输行业的核心业务支撑平台,它直接关系到航空公司运营效率与旅客服务体验。传统民航系统普遍面临三大痛点:高并发场景下的系统稳定性不足、多终端数据同步延迟、业务流程耦合度过高。而基于SpringBoot的现代…
📅 2026/7/30 17:26:25
温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…
📅 2026/7/30 18:28:22
本文详细介绍JS面向对象。 本文目录1. 基于原型的继承2. 构造函数3. ES6 类语法4. 静态方法和属性5. 访问器属性6. 继承与多态7. 组合与混入8. 私有属性和方法1. 基于原型的继承
JavaScript 中每个对象都有一个内部属性 [[Prototype]],指向它的原型对象。当访问一个…
📅 2026/7/30 18:28:22
本文详细介绍JavaScript构造函数。 本文目录1. 基本构造函数2. 构造函数的工作原理3. 原型与构造函数4. 实例属性 vs 原型属性5. 构造函数的继承6. 构造函数与类的关系7. 静态方法与属性8. 构造函数的问题与优化构造函数 vs 工厂函数1. 基本构造函数
通过 new 关键字调用的函数…
📅 2026/7/30 18:28:22
更多请点击:
https://intelliparadigm.com
第一章:《人工智能导论》第4版核心命题体系总览 《人工智能导论》第4版以“智能的本质、实现的路径与演化的边界”为思想主线,重构了传统知识框架,将符号主义、连接主义与行为主义三大范…
📅 2026/7/30 18:28:22
Docker实战 | 使用Docker部署EasyNode服务器面板工具一、EasyNode介绍1.1 EasyNode简介1.2 EasyNode主要特点二、本次实践规划2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本四、拉取EasyNode镜像五、…
📅 2026/7/30 18:28:22
最近好多朋友在后台问我,说看到文献里或者实验报告里出现GeO4离子,心里直打鼓。这玩意儿到底是啥?是不是那种特别玄乎的高级材料?其实吧,真没你想的那么复杂,也没那么神秘。今天我就掰开揉碎了跟你们聊聊这个GeO4离子,咱们不整那些虚头巴脑的理论堆砌,就讲点实在的,让…
📅 2026/7/30 18:28:00
本文关键词:geo2是共价化合物哎,说实话,每次看到化学题里那些弯弯绕绕的电子式,我就头大。特别是遇到那种非要让你判断是离子还是共价的,心里就发毛。今天咱不整那些虚头巴脑的定义,就聊聊二氧化硅,也就是大家常说的硅石、石英,很多人会误写成geo2,虽然化学式不对,但…
📅 2026/7/30 0:00:24
B4557 [GESP202606 四级] 扫雷 https://www.luogu.com.cn/problem/B4557 中国计算机学会(CCF)2026年6月C四级讲解——扫雷 https://www.bilibili.com/video/BV1MCMg6AEXR/ B4557 [GESP202606 四级] 扫雷 https://www.bilibili.com/video/BV1ZKTj6ZEVh/ 2…
📅 2026/7/30 0:00:26
Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer
您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…
📅 2026/7/30 0:00:26
更多请点击:
https://codechina.net
第一章:AI帮助理解数学概念 人工智能正以前所未有的方式重塑数学学习的路径。通过自然语言处理与符号计算的深度融合,AI不仅能解析抽象定义,还能将定理、证明和几何直觉转化为可交互、可验证的…
📅 2026/7/30 1:16:07
1. 项目背景与核心价值去年参与的一个短剧项目让我深刻体会到传统创作流程的痛点:编剧团队花了三周打磨剧本,角色设计反复修改了七版,最后成片时又因为演员档期问题不得不临时调整分镜。这种低效的创作模式在快节奏的内容行业越来越难以为继。…
📅 2026/7/30 1:16:07
remix-i18next TypeScript类型安全实践:确保翻译键与类型定义同步 【免费下载链接】remix-i18next The easiest way to translate your React Router framework mode apps 项目地址: https://gitcode.com/gh_mirrors/re/remix-i18next
在开发多语言应用时&am…
📅 2026/7/30 1:16:07
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/30 7:16:27
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/30 17:17:14
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/30 5:16:22