news 2026/9/3 5:07:38

嵌入式地址对齐引入的问题和解决方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
嵌入式地址对齐引入的问题和解决方法

背景

通过串口传输float类型数据,接收后将接收到的数组通过float_tval=*(float_t*)(u_buf+5)进行强制转换为float类型,概率性出错,进入了HardFault

问题原因

float为4字节对齐,uint8_t是1字节对齐,进行转换的数组位置不一定是4字节对齐的起始,所以出现HardFault。

当然,不同系统中传输过去的数据也要考虑大小端问题。STM32(常见为 Little Endian)下,低地址存放低字节;

解决方法

1.利用memcpy,将内容复制到float类型变量

#include <string.h> uint8_t u_buf22[] = {0xAA, 0x19, 0x04, 0x9E, 0x3F}; float f; memcpy(&f, u_buf22 + 1, sizeof(f)); // 安全地读取 4 字节到对齐的 float 变量 printf("value = %f\r\n", f);

2.利用uint32_t 组装再转换

uint32_t tmp = (uint32_t)u_buf22[1] | ((uint32_t)u_buf22[2] << 8) | ((uint32_t)u_buf22[3] << 16) | ((uint32_t)u_buf22[4] << 24); float f; memcpy(&f, &tmp, sizeof(f)); // 将位样复制到 float

3.利用union

union { uint32_t u; float f; } conv; conv.u = (uint32_t)u_buf22[1] | ((uint32_t)u_buf22[2] << 8) | ... ; printf("%f\n", conv.f);
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 21:43:05

YimMenu终极配置指南:免费GTA5辅助工具深度使用教程

YimMenu终极配置指南&#xff1a;免费GTA5辅助工具深度使用教程 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMen…

作者头像 李华
网站建设 2026/9/2 22:24:53

终极DLC解锁神器:跨平台游戏内容完整体验指南

终极DLC解锁神器&#xff1a;跨平台游戏内容完整体验指南 【免费下载链接】CreamApi 项目地址: https://gitcode.com/gh_mirrors/cr/CreamApi 还在为心仪的游戏DLC无法体验而烦恼吗&#xff1f;CreamInstaller作为一款专业的自动DLC解锁工具和多平台支持的游戏内容解锁…

作者头像 李华
网站建设 2026/9/2 21:43:20

YimMenu完全指南:解锁GTA5游戏体验的终极秘籍

YimMenu完全指南&#xff1a;解锁GTA5游戏体验的终极秘籍 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu …

作者头像 李华
网站建设 2026/9/2 7:53:49

小白也能玩转Meta-Llama-3-8B:手把手教你搭建对话机器人

小白也能玩转Meta-Llama-3-8B&#xff1a;手把手教你搭建对话机器人 1. 引言 1.1 为什么选择 Meta-Llama-3-8B-Instruct&#xff1f; 在当前大模型快速发展的背景下&#xff0c;如何在本地低成本部署一个高性能、可交互的对话机器人&#xff0c;成为许多开发者和AI爱好者关注…

作者头像 李华
网站建设 2026/9/3 0:21:37

PAGExporter插件终极指南:5分钟实现跨平台动画零障碍

PAGExporter插件终极指南&#xff1a;5分钟实现跨平台动画零障碍 【免费下载链接】libpag The official rendering library for PAG (Portable Animated Graphics) files that renders After Effects animations natively across multiple platforms. 项目地址: https://gitc…

作者头像 李华
网站建设 2026/9/2 9:25:11

Qwen3-0.6B + LangChain:5分钟实现本地调用

Qwen3-0.6B LangChain&#xff1a;5分钟实现本地调用 1. 引言&#xff1a;轻量大模型与本地化推理的新范式 随着大语言模型&#xff08;LLM&#xff09;技术的快速发展&#xff0c;如何在资源受限的环境中高效运行模型成为开发者关注的核心问题。Qwen3-0.6B作为通义千问系列…

作者头像 李华