当前位置: 首页 > news >正文

关于单片机的无符号整型uint32_x

//32、16、8 位无符号整形
typedef uint32_t  u32;  //1 字节(Byte)= 8 位(bit),因此 32 位换算为字节是:32 ÷ 8 = 4 字节typedef uint16_t u16;   
//1 字节(Byte)= 8 位(bit),因此 16 位换算为字节是:16 ÷ 8 = 2 字节typedef uint8_t  u8;    
//由于 1 字节(Byte)= 8 位(bit),因此 8 位换算为字节是:8 ÷ 8 = 1 字节

关于OTA变量申明:

typedef struct{u32 OTA_flag;          //标志位u32 FirmwareLen[11];   //固件的长度u8	OTA_Version[32];   //版本号
}OTA_InfoCB;

1. OTA_flag 用 u32(32 位)的原因

OTA_flag 是 “标志位变量”,通常用于存储多个状态标记(通过位运算实现)。
例如:

  • 第 0 位:标记 “是否正在升级”(0 = 否,1 = 是)
  • 第 1 位:标记 “升级是否成功”(0 = 失败,1 = 成功)
  • 第 2 位:标记 “是否需要重启”(0 = 不需要,1 = 需要)

32 位的 u32 可以提供32 个独立的标志位,足以容纳 OTA 过程中所有可能的状态(如升级阶段、错误类型、校验结果等)。如果用 8 位的 u8,最多只能表示 8 个状态,可能不够用。

2. FirmwareLen[11] 用 u32(32 位)的原因

FirmwareLen 用于存储固件的长度(字节数)
嵌入式设备的固件大小通常较大(例如:几 KB 到几 MB 甚至更大):

  • 8 位的 u8 最大只能表示 255 字节(显然不够,连小固件都存不下);
  • 16 位的 u16 最大只能表示 65535 字节(约 64KB),对于稍大的固件(如 100KB 以上)也不够;
  • 32 位的 u32 最大可表示 4294967295 字节(约 4GB),足以覆盖绝大多数嵌入式设备的固件大小需求。

因此用 u32 是为了满足固件长度的数值范围

3. OTA_Version[32] 用 u8(8 位)的原因

OTA_Version 用于存储版本号字符串(如 "V1.2.3_build2023"),而字符串在计算机中本质是字节序列

  • 每个字符(字母、数字、符号)的 ASCII 码范围是 0-255,刚好可以用 1 个 8 位的 u8 存储;
  • 32 个 u8 组成的数组,最多可存储 31 个字符(加 1 个字符串结束符 \0),足以容纳常见的版本号格式。

如果用 u32 存储字符串,会导致4 倍的内存浪费(1 个字符用 4 字节存储),完全没有必要。

http://www.dtcms.com/a/293972.html

相关文章:

  • 代码随想录算法训练营第五十二天|图论part3
  • 使用 gh-pages 将 next.js15 静态项目部署到 github pages
  • 重磅发布:Oracle ADG 一键自动化搭建脚本
  • OceanBase数据库
  • 如何在macOS上修改iPhone的定位
  • Qt 自定义控件开发方法与实践
  • cx_Freeze python 打包详解
  • Qt 数据QByteArray与QString处理与转换全指南
  • QT的moveToThread 用法
  • Java按模板导出Excel
  • LoRA 低秩矩阵实现参数高效的权重更新
  • 2025 ACT 汽车功能安全相关PPT分享
  • 《计算机网络》实验报告七 HTTP协议分析与测量
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题汇总版,持续更新学习,加油!!!
  • 场效应管和模电的关于、学习
  • 【盘古100Pro+开发板实验例程】FPGA | Modelsim 的使用和 do 文件编写
  • SpringBoot 使用Rabbitmq
  • rust嵌入式开发零基础入门教程(一)
  • FSHNet:高效目标检测新突破
  • rust嵌入式开发零基础入门教程(五)
  • Python应用指南:构建和获取全球地铁线路数据及可视化
  • HarmonyOS学习记录5
  • 【形态学变换】——图像预处理(OpenCV)
  • (nice!!!)(LeetCode 每日一题) 1717. 删除子字符串的最大得分 (贪心)
  • 昨天去看了电科金仓的发布会,有点东西!
  • AI营销核心技术解析:运作机制与行业应用实例
  • 【软件系统架构】系列七:嵌入式系统性能深入解析
  • 华为云中,列表中的镜像无法删除可能由多种原因导致
  • 华为云开发者空间 × DeepSeek-R1 智能融合测评:云端开发与AI客服的协同进化
  • WPF的一些基础知识学习记录