打印
[STM32F4]

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

[复制链接]
343|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 要一致。

使用特权

评论回复
5
童雨竹| | 2025-5-25 07:36 | 只看该作者
我之前也踩坑了,加上 -mfloat-abi=hard -mfpu=fpv4-sp-d16 才解决。

使用特权

评论回复
6
万图| | 2025-5-25 07:37 | 只看该作者
printf 打印 float 还要加 -u _printf_float 链接选项才能正常。

使用特权

评论回复
7
Wordsworth| | 2025-5-25 07:38 | 只看该作者
可以试试用 sprintf 转 float,然后输出字符串,看是否也崩。

使用特权

评论回复
8
Bblythe| | 2025-5-25 07:39 | 只看该作者
如果用的是精简库(nano),默认是不支持 float 的,需要手动配置。

使用特权

评论回复
9
Pulitzer| | 2025-5-25 07:40 | 只看该作者
可以在出错前设置断点看是不是非法指令或栈溢出引发的 HardFault。

使用特权

评论回复
10
Uriah| | 2025-5-25 07:41 | 只看该作者
有些编译器默认不开启硬件浮点,你可以检查 build log 确认。

使用特权

评论回复
11
Clyde011| | 2025-5-25 07:42 | 只看该作者
建议先写个最小 float 输出测试程序,确认工具链配置无误再集成。

使用特权

评论回复
12
gaonaiweng| | 2025-5-31 17:51 | 只看该作者
Flash的成本没那么高

使用特权

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

本版积分规则

14

主题

14

帖子

0

粉丝