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和系统兼容以及资源管理和稳定性该如何权衡)