news 2026/6/10 18:17:18

minic的结构体内存对齐问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
minic的结构体内存对齐问题

8位MCU在使用结构体时,内部成员有bit,byte,word。

例如

struct Device_Data { byte B_JC :1; byte B_unlock :1; byte B_lock :1; byte B_CHG :1; byte R_SOC; byte R_version; word R_VBUS; byte B_ADC_CH_OK:1; byte B_A1 :1; byte B_A2 :1; byte B_C1 :1; byte B_C2 :1; byte NTC_temp; }

此时不同类型的数据不能混在一起,需要分开和对齐。不然会出现数据相互覆盖的情况。例如修改B_CHG会影响到R_SOC的值。

应该这样排列,不够一个byte,需要用B_reserved填充到1个byte

struct Device_Data { byte B_JC :1; byte B_unlock :1; byte B_lock :1; byte B_CHG :1; byte B_ADC_CH_OK:1; byte B_A1 :1; byte B_A2 :1; byte B_C1 :1;//1byte byte B_C2 :1; byte B_reserved0:1; byte B_reserved1:1; byte B_reserved2:1; byte B_reserved3:1; byte B_reserved4:1; byte B_reserved5:1; byte B_reserved6:1;//2byte byte R_SOC; byte R_version; byte NTC_temp; word R_VBUS; }

如果是32位MCU的话,最好32位对齐

struct Device_Data { byte B_JC :1; byte B_unlock :1; byte B_lock :1; byte B_CHG :1; byte B_ADC_CH_OK:1; byte B_A1 :1; byte B_A2 :1; byte B_C1 :1;//1byte byte B_C2 :1; byte B_reserved0:1; byte B_reserved1:1; byte B_reserved2:1; byte B_reserved3:1; byte B_reserved4:1; byte B_reserved5:1; byte B_reserved6:1;//2byte byte R_SOC; byte R_version; //4byte byte R_NTC_temp; byte R_reserved0; word R_VBUS; //8byte }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/29 22:39:10

零代码基础也能玩:ChatGLM3-6B一键部署教程

零代码基础也能玩:ChatGLM3-6B一键部署教程 1. 这不是“又要配环境”的教程,是真开箱即用 你是不是也经历过—— 看到“ChatGLM3-6B本地部署”就下意识点叉? 因为脑海里立刻浮现出:装Ubuntu、禁Nouveau、换源、conda建环境、pip…

作者头像 李华
网站建设 2026/6/6 15:24:46

Z-Image-Turbo交互界面体验,Gradio操作真友好

Z-Image-Turbo交互界面体验,Gradio操作真友好 第一次点开Z-Image-Turbo的Web界面时,我下意识点开了浏览器的开发者工具——不是为了调试,而是想确认这真的只是本地跑起来的一个Gradio应用,而不是某个云端服务的前端。页面加载快得…

作者头像 李华
网站建设 2026/6/6 12:42:07

5步搞定GTE文本向量模型:中文多任务处理不求人

5步搞定GTE文本向量模型:中文多任务处理不求人 你是否遇到过这样的场景: 客服系统需要从海量对话中快速识别用户提到的公司名、产品型号和时间点?新闻平台想自动提取每篇报道里的核心事件、涉事人物和情感倾向?企业知识库希望支…

作者头像 李华
网站建设 2026/6/5 15:50:02

Switch手柄玩转PC指南:BetterJoy从入门到精通

Switch手柄玩转PC指南:BetterJoy从入门到精通 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcode.com/gh_mirro…

作者头像 李华
网站建设 2026/6/10 10:23:11

从零开始:用GLM-Image搭建AI绘画平台的完整流程

从零开始:用GLM-Image搭建AI绘画平台的完整流程 你是否曾为一张理想中的画面在脑海盘旋良久,却苦于无法落笔?是否试过用其他AI绘图工具,却在复杂的参数、漫长的加载、模糊的细节中一次次放弃?这一次,不用下…

作者头像 李华