[STM32F4] FreeRTOS 的 CubeIDE 浮点计算错误

[复制链接]
 楼主| 梧桐uuu 发表于 2025-5-24 22:56 | 显示全部楼层 |阅读模式
本帖最后由 梧桐uuu 于 2025-7-28 22:28 编辑

将某些类型的浮点数强制转换为字符串类型。使用 keil c 时,没有问题,但是使用 Cube IDE 时,程序会跳转到 HardFault_Handler。在工具设置中使用 float 和 newlib - nano 中的 printf。
只要使用 FreeRTOS 时收到此错误,如果不使用 FreeRTOS,则没有问题。
STM32f4 和 f1 都得到相同现象。

cr315 发表于 2025-5-26 12:54 | 显示全部楼层
Newlib-nano 默认为了节省空间,不支持浮点数格式化(如 %f、%g)。当代码尝试格式化浮点数时,会调用未实现的函数(如 _printf_float),导致 HardFault。
elephant00 发表于 2025-5-26 12:55 | 显示全部楼层
可能是Newlib-nano 的浮点支持问题。Keil MDK 可能默认启用了浮点支持,而 CubeIDE需要显式配置。
powerantone 发表于 2025-5-26 13:46 | 显示全部楼层
启用 Newlib-nano 的浮点支持。
jcky001 发表于 2025-5-26 16:00 | 显示全部楼层
FreeRTOS 的堆栈竞争导致的?
stormwind123 发表于 2025-5-26 18:20 | 显示全部楼层
增大 FreeRTOS 任务的堆栈。
flycamelaaa 发表于 2025-5-26 22:00 | 显示全部楼层
可能工具链的浮点 ABI 不匹配。
classroom 发表于 2025-5-26 23:00 | 显示全部楼层
可以试试用专用库避免依赖 printf
t60yz 发表于 2025-5-31 23:43 | 显示全部楼层
如果用 ITM 或半主机方式调试 printf,有时浮点输出支持有限,尝试用串口。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

44

主题

46

帖子

0

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