转载请注明出处:https://www.eefocus.com/constyu/blog 在开发调试过程中,通过串口输出浮点数是个很常见的应用,但在SDK1.3默认不能打印浮点数(原因或许是考虑到生成文件的大小),那具体如何使能浮点打印呢?在community有很多人问到这个问题,回答也是五花八门,但往往都需要修改底层源文件。 回答这个问题之前,有必要先讲一下SDK中大写的PRINTF和小写printf的区别: - 大写的PRINTF相当于是SDK自己实现的输入输出函数debug_printf,其实现代码位于utilities文件夹下的fsl_debug_console.c和printf_scan.c中。
- 小写的printf调用的则是IAR或者KDS中标准输入输出库函数stdio.h中printf。
由于以上差异,使用不同的大小写的printf,打印浮点的设置方式自然也不一样。 1. 对于默认的大写的PRINTF,一步步跟踪其实现源代码,PRINTF->debug_printf->_doprint即可看到其在代码中实现了浮点打印,但是需要定义宏PRINTF_FLOAT_ENABLE。 于是,在IAR中添加该宏定义PRINTF_FLOAT_ENABLE,然后重新编译代码,从打印信息上可以看到能够打印出浮点数。 2. 对于小写的printf,由于其调用的是stdio标准库中的输入输出函数,所以其设置方法如下,然后重新编译,从打印信息上可以看到能够打印出浮点数。
|