恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

【嵌入式外设精学】Day17|Flash:页擦写、参数保存、掉电安全

  • 首页
  • 资讯中心
  • /
  • 【嵌入式外设精学】Day17|Flash:页擦写、参数保存、掉电安全

相关资讯

RobotStudio码垛机器人工作站仿真:从布局到RAPID编程全流程 2026/10/4 20:09:43
ESP32-S3 Mini与C3 Mini怎么选?PSRAM、USB与引脚差异全解析 2026/10/4 20:09:43
C++ 第 22 课:const —— 不允许随便修改的数据 2026/10/4 20:09:43

最新资讯

Writable External Entities 深度解析,让 ABAP SQL 真正写入外部 SAP HANA Cloud
从零搭建AI工程能力:避开调包陷阱的实践指南
重磅:多家巨头密集发布决策模型,自动化开发成本将大幅降低
记了么电子礼簿 | 人情账目可追溯,往来查询更省心
2026年阿里云OpenClaw/Hermes Agent配置Token Plan部署从零开始:把settings改到TaoToken
MiniMax API Key 获取的方法:把 key 配到 TaoToken 统一通道的实操记录

今日推荐

MR25H40CDF + PIC18F65K40:工业记录仪高可靠存储实战
基于STM32的数控恒压恒流电源设计:从硬件到PID调参全解析
LT9211 MIPI重定时器原理与双路扇出实战指南

本周热门

MR25H40CDF + PIC18F65K40:工业记录仪高可靠存储实战
基于STM32的数控恒压恒流电源设计:从硬件到PID调参全解析
LT9211 MIPI重定时器原理与双路扇出实战指南

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

【嵌入式外设精学】Day17|Flash:页擦写、参数保存、掉电安全

发布时间:2026/10/4 20:09:43
【嵌入式外设精学】Day17|Flash:页擦写、参数保存、掉电安全 【嵌入式外设精学】Day17Flash页擦写、参数保存、掉电安全今天解决为什么不能像 RAM 随便写参数怎样存才抗掉电目录问题 2. 原理 3. 代码 4. 误区 5. 自测 6. 答案1. 问题存参数偶发坏写得很勤后来整片变砖2. 原理2.1 擦和写是两回事操作粒度意思擦页/扇区整块变“空白”写字/半字往空白里写改一个字节往往也要先擦整页再写回。2.2 寿命有限每块能擦写的次数有限常见万级到十万级看器件。不能每 10ms 存一次 PID。2.3 掉电安全双份 A/BA 页 / B 页都带“序号 校验” 保存写到“不是当前有效”的那一份 上电两份都读取校验过且序号大的这样写到一半掉电旧那份仍可用。3. 代码示例#includestdint.h#includestdbool.h#includestring.h#defineMAGIC0x5041524Dutypedefstruct{floatkp,ki,kd;}par_t;typedefstruct{uint32_tmagic;uint16_tver;uint16_tseq;par_tp;uint32_tcrc;}blob_t;/* 平台相关擦页、写、读、CRC */voidflash_erase_page(uint32_tpage);voidflash_write(uint32_taddr,constvoid*d,uint32_tn);voidflash_read(uint32_taddr,void*d,uint32_tn);uint32_tpage_addr(uint32_tpage);uint32_tcrc32_calc(constuint8_t*d,uint32_tn);staticvoidseal(blob_t*b){b-magicMAGIC;b-crccrc32_calc((constuint8_t*)b,(uint32_t)(sizeof(*b)-4u));}staticboolok(constblob_t*b){returnb-magicMAGICb-crccrc32_calc((constuint8_t*)b,(uint32_t)(sizeof(*b)-4u));}intparam_save(uint16_t*seq,constpar_t*in,uint32_tpage){blob_tb;memset(b,0,sizeof(b));b.seq(uint16_t)(*seq1u);b.p*in;seal(b);flash_erase_page(page);flash_write(page_addr(page),b,sizeof(b));*seqb.seq;return0;}boolparam_load(par_t*out,uint16_t*seq,uint32_tpage_a,uint32_tpage_b){blob_ta,b;flash_read(page_addr(page_a),a,sizeof(a));flash_read(page_addr(page_b),b,sizeof(b));if(ok(a)ok(b)){constblob_t*sel((int16_t)(a.seq-b.seq)0)?a:b;*outsel-p;*seqsel-seq;returntrue;}if(ok(a)){*outa.p;*seqa.seq;returntrue;}if(ok(b)){*outb.p;*seqb.seq;returntrue;}returnfalse;}保存时机按钮“保存参数”、关机前、模式切换——不要高频定时写。4. 常见误区误区正解Flash 当 EEPROM 随便改要擦写策略和寿命意识只存一份掉电可能半新半旧不加校验坏数据当参数用运行中频繁写寿命和掉电风险都大5. 自测双份 A/B 的好处为什么不能每圈都存 PID6. 答案写挂了还有旧有效数据取“校验过且更新”的那份。寿命不够且掉电时容易写坏应在明确“保存”时刻写。作者shuifanyu标签Flash掉电参数存储

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号