(目前master分支已无该问题,RT_ALIGN_SIZE默认为8了)主要讲讲MounRiver Studio下的浮点打印(RTT Studio)问题,RT-Thread Studio的话我没试过,不过论坛里的一些vsnprintf替换rt_vsnprintf应该是不可行的(gcc下 ch32v会抛出线程错误,其它的keil或许可以,不过没试过)。MounRiver Studio比较特殊,网上的方法都不行,要么浮点打印失败,要么引发rtthread错误,中间试了很多方法,涉及到一些编译器C库之类的
直接说结论和方法
MounRiver Studio裸机开发ch32想printf浮点的话(ch32官方已经为我们实现了printf重定向,如果其它芯片比如stm32就要自己重定向一下),需要勾选一个选项,如图:
rt_kprintf打印浮点需要一个补丁包rt_vsnprintf_full
关于ROM占用和浮点解决方案(已提issue)可以看这里:
ROM占用
rt_vsnprintf_full浮点输出全0问题
浮点问题解决了,大佬回复很快啊(这里感谢大佬@mysterywolf),将rtconfig.h里的字节对齐宏改为8,
#define RT_ALIGN_SIZE 8
之后如果想用printf的,就是要勾选我前面提到的Use wchprintfloat(其它芯片和IDE重定向printf并修改字节对齐)
想用rt_kprintf的,就要添加一个补丁包
rt_vsnprintf_full
那就大功告成了(亲测)
printf和rt_vsnprintf_full补丁包ROM都是8KB,所以不用纠结。
原作者:初级踩坑仔
|