[应用相关] FPU 使用 float 变量地址要 4 字节对齐

[复制链接]
 楼主| WhisperingTrees 发表于 2025-3-13 10:19 | 显示全部楼层 |阅读模式
Questions:为何 FPU 使用 float 变量地址要 4 字节对齐? Answer:当开启 FPU 时,如果 float 变量地址没有 4 字节对齐,会出现 Hard Fault 现象。如下图,test1 没有 4 字节对齐,程序会进入 HardFault_Handler。

  1. test1 = (float*)test_arr;
  2. test1 = (float*)((uint32_t)(&test_arr[0])+2);
  3. *test1 = 0.52f;
  4. *test2 = 0.52f;
9110067d2407fa9386.png
5421167d2408b0eaca.png
修改为如下,就可以正常运行。
  1. test1 = test_arr;
  2. test1 = ((&test_arr[0]) + 2);
  3. *test1 = 0.52f;
  4. *test2 = 0.52f;
1602567d240a8d1c79.png
低语之树 发表于 2025-3-13 10:22 | 显示全部楼层
有没有办法自动对齐字节啊
遗忘领域 发表于 2025-3-17 10:33 | 显示全部楼层
这个 HardFault_Handler不注意很容易忽略
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

54

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

13

主题

54

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部