news 2026/5/2 4:48:50

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

作者头像

张小明

前端开发工程师

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/5/1 9:57:28

如何用SeleniumBasic彻底告别手动网页操作:完整自动化指南

如何用SeleniumBasic彻底告别手动网页操作&#xff1a;完整自动化指南 【免费下载链接】SeleniumBasic A Selenium based browser automation framework for VB.Net, VBA and VBScript 项目地址: https://gitcode.com/gh_mirrors/se/SeleniumBasic 还在为每天重复的网页…

作者头像 李华
网站建设 2026/5/1 10:45:48

小白友好!Qwen3-0.6B本地部署图文教程

小白友好&#xff01;Qwen3-0.6B本地部署图文教程 1. 引言&#xff1a;为什么选择Qwen3-0.6B&#xff1f; 在当前大模型快速发展的背景下&#xff0c;越来越多开发者希望将高性能语言模型部署到本地环境&#xff0c;实现数据隐私保护与低延迟响应。Qwen3&#xff08;千问3&am…

作者头像 李华
网站建设 2026/5/1 22:17:52

FactoryBluePrints:戴森球计划工厂布局终极解决方案

FactoryBluePrints&#xff1a;戴森球计划工厂布局终极解决方案 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints 你是否曾经在戴森球计划中遭遇这样的困境&#xff1f;精心设…

作者头像 李华
网站建设 2026/4/29 2:48:51

5大实战技巧:robot_localization高效定位全攻略

5大实战技巧&#xff1a;robot_localization高效定位全攻略 【免费下载链接】robot_localization robot_localization is a package of nonlinear state estimation nodes. The package was developed by Charles River Analytics, Inc. Please ask questions on answers.ros.o…

作者头像 李华
网站建设 2026/5/1 10:40:30

AI智能二维码工坊高效使用:批量处理二维码的脚本示例

AI智能二维码工坊高效使用&#xff1a;批量处理二维码的脚本示例 1. 引言 1.1 业务场景描述 在日常开发与运营工作中&#xff0c;二维码作为信息传递的重要载体&#xff0c;广泛应用于推广链接、设备绑定、支付入口等场景。当面对成百上千条URL或文本需要批量生成二维码时&a…

作者头像 李华