STM32F4输出浮点数,程序会进入硬件错误。
STM32cubeIDE中勾选了设置中的输入输出浮点,仍然出错。修改为标准库或者精简库也出错。请问有人遇到同样问题么?怎么解决?
是不是没启用 FPU?STM32F4 要手动在启动文件里开启浮点支持。 检查下 startup 文件里 SCB->CPACR 的 FPU 权限有没有开。 你选的浮点库是不是跟编译器浮点 ABI 对不上?hard 和 softfp 要一致。 我之前也踩坑了,加上 -mfloat-abi=hard -mfpu=fpv4-sp-d16 才解决。 printf 打印 float 还要加 -u _printf_float 链接选项才能正常。 可以试试用 sprintf 转 float,然后输出字符串,看是否也崩。 如果用的是精简库(nano),默认是不支持 float 的,需要手动配置。 可以在出错前设置断点看是不是非法指令或栈溢出引发的 HardFault。 有些编译器默认不开启硬件浮点,你可以检查 build log 确认。 建议先写个最小 float 输出测试程序,确认工具链配置无误再集成。 Flash的成本没那么高 缺少 -mfloat-abi=hard 或 -mfpu=fpv4-sp-d16 之类的参数,导致编译器和链接器对浮点指令支持不一致。
页:
[1]