MCUXpresso IDE 中 PRINTF 正负数与浮点数

以下内容以 i.MX RT1010 EVK 为例,使用 SDK_2_14_0_EVK-MIMXRT1010,开发环境为 MCUXpresso IDE。


一、PRINTF 测试


首先我们导入一个 hello_word 的例程,在里面增加整型正负数、浮点型正负数的 PRINTF 输出。




图 1. 测试 PRINTF 打印

我们会发现,默认情况下,负数和浮点全部都无法正常输出。




图 2. 默认输出结果

为了精简代码,SDK 默认是关闭负数和浮点数的 PRINTF 输出的,我们可以自己在代码中开启。

 

二、支持正负数


正负数这个比较简单,可以直接添加宏 PRINTF_ADVANCED_ENABLE=1 即可,如下图。




图 3. 使能正负数相关宏

重新编译下载,会发现负数已经能正常输出了。




图 4. 负数输出结果

 

三、支持浮点数


这里我们类似前面那样设置浮点数的宏,添加 PRINTF_ADVANCED_ENABLE=1,如果定义了宏 CR_INTEGER_PRINTF,需要删掉该宏。




图 5. 使能浮点相关宏

重新编译下载,会发现正数的浮点能正常输出,但负数的浮点会出现错误。




图 6. 浮点数输出结果

这里参考 MCUXpresso IDE 的 Help 文档,提到 SDK 默认使用的 Redlib 库默认只使能了 integer only,即是前面我们删掉的宏 CR_INTEGER_PRINTF。库 NewlibNano 可按照红框设置使能浮点打印。




图 7. 帮助文档

按照文档进行设置,如下图所示,记得勾选“Enable printf float”。




图 8. 更换 Library

重新编译下载,此时负数数的浮点也能正常输出了。




图 9. 浮点输出结果

由于 NewlibNano 是完整的 C 库,会比 Redlib 会大一些,所以编译出来的代码总大小也会更大,下面是两种 lib 占用空间的对比,大家可以根据需求衡量取舍。

 


图 10. 浮点输出结果

 

 

四、参考资料


(1) MCUXPresso IDE 帮助文档

(2) NXP Community《To complement solution how to printf float number in MCUXpresso IDE》,网址如下:

https://community.nxp.com/t5/MCUXpresso-IDE/To-complement-solution-how-to-printf-float-number-in-MCUXpresso/m-p/1431699

(3) NXP Community《Printf won't print floats》,网址如下:

https://community.nxp.com/t5/MCUXpresso-IDE/Printf-won-t-print-floats/m-p/1093043

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论