stm32 cubeIDE FreeRTOS printf 浮点数打印错误

1、在工程使用printf打印浮点数时报错

printf(" value = %.4f\r\n",value);

assertion "REENT malloc succeeded" failed: file "/build/gnu-tools-for-stm32_9-2020-q2-update.20201001-1621/src/newlib/newlib/libc/stdlib/dtoa.c", line 234

简单处理:printf时打印浮点数报错,不使用浮点数打印输出即可。

2、网上搜索答案好多遇到相同问题

(资源来自网络:https://community.st.com/s/question/0D50X0000BB1eL7SQJ/bug-cubemx-freertos-projects-corrupt-memorynewlib and FreeRTOS

3、如何解决(使用第三方的API补丁:heap_useNewlib_ST.c)

下载:heap_useNewlib_ST.c

添加进工程目录:Third_Party/FreeRTOS/portable/MemMang/

删除之前的heap和mem管理文件,上图的heap_4.c和下图的sysmem.c

 

 修改RTOS配置文件,将configUSE_NEWLIB_REENTRANT 0,配置成1(Third_Party/FreeRTOS/Source/inlclude/FreeRTOS.h)

 这一步如果使用的是cubeIDE也可以直接在软件中进行手动配置

4、结果(可以正常输出浮点数)

[09:44:34.206]收←◆ value = 1.3749

[09:44:34.708]收←◆ value = 1.3887

5、疑问(第三方API和系统兼容以及资源管理和稳定性该如何权衡)

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值