[STM32F4] STM32F4输出浮点数,程序会进入硬件错误。

[复制链接]
702|13
 楼主| lilaiju 发表于 2025-5-11 09:00 | 显示全部楼层 |阅读模式
STM32cubeIDE中勾选了设置中的输入输出浮点,仍然出错。修改为标准库或者精简库也出错。
请问有人遇到同样问题么?怎么解决?

公羊子丹 发表于 2025-5-25 07:34 | 显示全部楼层
是不是没启用 FPU?STM32F4 要手动在启动文件里开启浮点支持。
周半梅 发表于 2025-5-25 07:35 | 显示全部楼层
检查下 startup 文件里 SCB->CPACR 的 FPU 权限有没有开。
帛灿灿 发表于 2025-5-25 07:35 | 显示全部楼层
你选的浮点库是不是跟编译器浮点 ABI 对不上?hard 和 softfp 要一致。
童雨竹 发表于 2025-5-25 07:36 | 显示全部楼层
我之前也踩坑了,加上 -mfloat-abi=hard -mfpu=fpv4-sp-d16 才解决。
万图 发表于 2025-5-25 07:37 | 显示全部楼层
printf 打印 float 还要加 -u _printf_float 链接选项才能正常。
Wordsworth 发表于 2025-5-25 07:38 | 显示全部楼层
可以试试用 sprintf 转 float,然后输出字符串,看是否也崩。
Bblythe 发表于 2025-5-25 07:39 | 显示全部楼层
如果用的是精简库(nano),默认是不支持 float 的,需要手动配置。
Pulitzer 发表于 2025-5-25 07:40 | 显示全部楼层
可以在出错前设置断点看是不是非法指令或栈溢出引发的 HardFault。
Uriah 发表于 2025-5-25 07:41 | 显示全部楼层
有些编译器默认不开启硬件浮点,你可以检查 build log 确认。
Clyde011 发表于 2025-5-25 07:42 | 显示全部楼层
建议先写个最小 float 输出测试程序,确认工具链配置无误再集成。
gaonaiweng 发表于 2025-5-31 17:51 | 显示全部楼层
Flash的成本没那么高
gaonaiweng 发表于 2025-5-31 17:55 | 显示全部楼层
缺少 -mfloat-abi=hard 或 -mfpu=fpv4-sp-d16 之类的参数,导致编译器和链接器对浮点指令支持不一致。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

51

主题

51

帖子

0

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