内存对齐,导致char型数组指针转化为float型指针出现的问题

2023-11-10

         前阵子在做一个无线调参软件时,需要把一个float型的变量从上位机(qt平台编写)发给下位机(stm32),然后我采取的做法是将储存float变量的四个字节里面的数据通过串口以此发给下位机,然后下位机用一个char[4]数组进行接收,然后将char型数组的指针类型强行转化为float型,并将其读出,这样子就可以得到原来的float类型,stm32运行时发现了一个奇怪的问题,如下:

uint32_t Remote_time = 0;
char Current_Mode = 3;

unsigned char a[4]={0xA2,0xA1,0xB2,0xB1};
float b;

unsigned char a1[4]={0xA2,0xA1,0xB2,0xB1};
float b1;

int main(void)
{
	systemInit();
	Remote_time = micros();
	
	while(1)
	{
		b = *((float *)a);
		b1 = *((float *)a1);
	}
}

可以发现在stm32运行时b = *((float *)a);是没有任何问题的,而且类型也可以正确读取,而一执行到b1 = *((float *)a1);时,程序便进入void HardFault_Handler(void)这个while(1);死循环函数,刚开始觉得一头雾水,因为b = *((float *)a);和b1 = *((float *)a1);是操作完全相同类型的变量,而且操作内容完全一样,只是变量定义的顺序不一样而已,到时想法是难道变量定义的顺序会影

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

内存对齐,导致char型数组指针转化为float型指针出现的问题 的相关文章

  • 使用springcloud feign时 token认证

    我们在项目中使用feign进行调用时 往往需要进行身份验证 而feignclient需要按照http调用方的格式来书写 这时候呢 我们可以使用这种方式来进行加入身份验证 public class FeignConfig implements
  • tcp服务端通讯+按键发送协议

    import threading import socket import json import keyboard TCP服务器配置 HOST 0 0 0 0 PORT 8888 创建TCP服务端 server socket socket
  • kodi 下载插件失败/无法刮削

    kodi 下载插件失败 无法刮削 很有可能是被墙 或者DNS被污染 解决的方法很简单 修改host 并不是修改nas win kodi上的host 一个一个修改太麻烦了 而是在路由器上修改host 这样一来所有的设备都可以使用了 现在的路由
  • 【C++】STL初识

    目录 STL背景和定义 STL分类 STL三大分类 容器 算法 迭代器 STL六大组件 STL容器使用案例 创建容器 遍历容器 容器嵌套容器 STL背景和定义 STL是标准模板库 Standard Template Library STL

随机推荐

  • 基础算--简单枚举

    简单枚举 顾名思义 枚举便是依次列举出所有可能产生的结果 根据题中的条件对所得的结果进行逐一的判断 过滤掉那些不符合要求的 保留那些符合要求的 也可以称之为暴力算法 枚举结构 循环 判断语句 应用场合 在竞赛中 并不是所有问题都可以使用枚举
  • 【Vue3】SplitPane 可拖拽分隔面板组件

    1 效果图 2 组件完整代码
  • 算法笔记--最大连续1的个数Ⅲ

    leetcode题目链接 1004 最大连续1的个数 III 题目描述 给定一个二进制数组 nums 和一个整数 k 如果可以翻转最多 k 个 0 则返回 数组中连续 1 的最大个数 思路 这里可以转换思路 让题意更加明确 即 求一个最大连
  • 五十六.L1-017 到底有多二

    include
  • 【华为机试题】华为机试真题附解答(2020.9.16/c++)

    第一题题目描述 五键键盘只可以输入a ctrl c ctrl x ctrl v ctrl a 对应的功能为 a 输出到屏幕上a字母 ctrl c 复制选定内容到剪贴板 ctrl x 复制选定内容到剪贴板并且清空当前选定内容 ctrl v 将
  • Vue.js面试题整理

    一 什么是MVVM MVVM是Model View ViewModel的缩写 MVVM是一种设计思想 Model 层代表数据模型 也可以在Model中定义数据修改和操作的业务逻辑 View 代表UI 组件 它负责将数据模型转化成UI 展现出
  • 刷脸支付的产品也在慢慢的完善当中

    如今 春暖花开 万物复苏 在经历了疫情的严冬之后 相信 真正的春天即将来临 在这样的背景下 刷脸支付 这一被疫情耽误了的新的支付方式 或许将迎来一次全新的爆发 说 2019年被称为刷脸支付的元年 在很多人满怀期待刷脸支付或将在2020年进一
  • Java实现加密(一)AES加解密

    目录 1 背景知识 2 AES简介 3 AES的加密过程 AES处理单位 字节 4 Java实现 4 1 生成密钥和偏移量 4 2 AESUtil java 源码 4 3 执行结果 4 4 线上验证 1 背景知识 在密码学中 加密算法分为单
  • facebook 邀请好友

    话不多说 直接上代码了 邀请好友 public void sendFilteredChallenge final Vector
  • 多表连接查询详解

    1 1 多表连接查询的概念 由于数据库中很多数据被分散到多个数据库表中 在查询数据时就经常出现要查的数据来自多个表中 此时就必须采用多表连接查询 多表连接查询是数据库查询中常见的查询方式 多表连接查询分为内连接和外连接 1 2 内连接的概念
  • vpd安全策略的使用

    1 首先我们创建用户vpd 并给与一定的权限 create user vpd identified by 123456 grant resource connect to vpd grant execute on dbms rls to v
  • 电脑无法登录microsoft账号怎么办?

    电脑登录Microsoft账号的方法 请按以下步骤进行 打开控制面板 右键点击左下角的Windows徽标就可以看见弹出菜单有这个选项 win10系统则可以通过搜索功能直接查到控制面板 进入控制面板后把查看方式改为大图标 然后选择网络和共享中
  • 硬核!八张图搞懂 Flink 端到端精准一次处理语义 Exactly-once(深入原理,建议收藏)

    Flink 在 Flink 中需要端到端精准一次处理的位置有三个 Source 端 数据从上一阶段进入到 Flink 时 需要保证消息精准一次消费 Flink 内部端 这个我们已经了解 利用 Checkpoint 机制 把状态存盘 发生故障
  • PAT-哈夫曼树(list、collection)

    Huffuman树 qdulq 40 分 Huffman树在编码中有着广泛的应用 在这里 我们只关心Huffman树的构造过程 给出一列数 pi p0 p1 pn 1 用这列数构造Huffman树的过程如下 1 找到 pi 中最小的两个数
  • 加密套件ECDHE_SM2_WITH_SM4_SM3及握手分析

    应证监局要求 国内金融产品程序化交易软件应采用国密算法实现SSL TLS通讯 我司采用开源项目GmSSL2 0实现 加密套件选用ECDHE SM2 WITH SM4 SM3 其中协议版本为TLS1 2 密钥交换 Key Exchange 算
  • Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案

    http blog csdn net boonya article details 70157820 Mybatis与JDBC批量插入MySQL数据库性能测试 Author boonya Date 2017 04 13 1 背景 系统中需要
  • 每日一题(设计循环队列)

    每日一题 设计循环队列 622 设计循环队列 力扣 LeetCode 1 题意解读 本题只能为队列开辟k个单位空间 并且只能利用这几个空间进行数据的存储 思路 本题使用数组来实现队列是比较方便的 首先定义两个变量 front和rear变量
  • 分组数据方差公式_用Excel算分组方差《excel怎么求分组的数据的标准差》

    现在等excel求分组数据标准差 在excel中求数据的标准以按照以下步行操作 步 打开excel表格 将需要求的一列数输入表格中 如下图 如果你要将所求的结果放在这一列数的最下面 你就将鼠标放在这一列数的最后面的单元格点击 第二步 选定工
  • 【GCC】gcc编译器的使用

    gcc编译器的使用 一 gcc编译过程 精简 1 gcc使用示例 2 执行 gcc o hello hello c v 时 可以查看到这些步骤 3 可以手工执行以下命令体验一下 二 gcc常用编译选项 三 怎么编译多个文件 四 制作 使用动
  • 内存对齐,导致char型数组指针转化为float型指针出现的问题

    前阵子在做一个无线调参软件时 需要把一个float型的变量从上位机 qt平台编写 发给下位机 stm32 然后我采取的做法是将储存float变量的四个字节里面的数据通过串口以此发给下位机 然后下位机用一个char 4 数组进行接收 然后将c