printf不能正常显示单精度浮点数

在多任务情况,使用printf不能正常显示单精度浮点数。比如:在LiteOS任务中显示单精度浮点数时,串口调试助手显示0.00

icon_pdf.gifprintf不能正常显示单精度浮点数.pdf


您好,可按照下图勾选配置试一下。

image.png


也不行,和printf相关的选项均以试过,解决不了。


您好,LiteOS中可以将任务堆栈设置为8字节对齐,即可正常打印,可按照下图配置一下

image.png


您好,可以通过手动指定堆栈8字节对齐来解决该问题:image.png


确实可以解决了!太爽了。能不能顺便说明一下这其中原因?



您好,printf的C运行库要求8字节对齐,若没有对齐导致发送浮点数,因此操作操作系统需要对任务堆栈做出要求,需要进行8字节对齐。


我也在调试这个问题, 改8字节对齐后,直接异常了

image.png


您好,由mcause的值可知异常的原因是由非法指令引起的,mepc的值为当前遇到异常时的指令PC值,mtval的值主要反映引起当前异常的指令编码,若方便,可将你的工程具体发到我的邮箱看一下(lzs@wch.cn)



我用rt-thread也遇到这个问题,打印的是0或者-2,8字节对齐后程序就挂了


您好,参考一下4楼回复配置一下



只有登录才能回复,可以选择微信账号登录