打印
[应用相关]

FPU 使用 float 变量地址要 4 字节对齐

[复制链接]
435|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Questions:为何 FPU 使用 float 变量地址要 4 字节对齐? Answer:当开启 FPU 时,如果 float 变量地址没有 4 字节对齐,会出现 Hard Fault 现象。如下图,test1 没有 4 字节对齐,程序会进入 HardFault_Handler。

test1 = (float*)test_arr;
test1 = (float*)((uint32_t)(&test_arr[0])+2);
*test1 = 0.52f;
*test2 = 0.52f;


修改为如下,就可以正常运行。
test1 = test_arr;
test1 = ((&test_arr[0]) + 2);
*test1 = 0.52f;
*test2 = 0.52f;

使用特权

评论回复
沙发
低语之树| | 2025-3-13 10:22 | 只看该作者
有没有办法自动对齐字节啊

使用特权

评论回复
板凳
遗忘领域| | 2025-3-17 10:33 | 只看该作者
这个 HardFault_Handler不注意很容易忽略

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

12

帖子

0

粉丝