lilaiju 发表于 2025-5-11 09:00

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

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 之类的参数,导致编译器和链接器对浮点指令支持不一致。
页: [1]
查看完整版本: STM32F4输出浮点数,程序会进入硬件错误。