STM32
直播中

黄色的小金橘

12年用户 602经验值
私信 关注
[问答]

怎样在UCOS的任务中用printf正确打印浮点数格式呢

怎样在UCOS的任务中用printf正确打印浮点数格式呢?如何去实现其功能呢?

回帖(1)

李玉林

2021-12-2 10:32:41
printf的重定向代码是 如下。




本程序实现的功能是DMA传输3路ADC,同时将ADC采样的数据在UCOSII的其中一个任务中实现。
三种情况:1、将打印放在UCOS的任务中打印浮点数格式
                2、将打印放在UCOS的任务中打印十六进制格式
                3、将打印放在主循环中(即未启动USOS等的初始化,相当于裸跑)
(一)异常现象:当在UCOS的某一个任务中用printf打印数据 打印浮点数格式时 ,串口打印出现如下现象:












(二)程序不变,只改变printf的打印格式,如下图红框所示,打印的十六进制数据如下。











(三)
将打印放在主循环 即裸跑,打印浮点数格式,数据完全正常












以上为发现的问题BUG。
参照网上资料,将堆栈8字节对其即可 。我将__align(8)写在了 main.c文件开头,已生效,打印浮点数正常






举报

更多回帖

发帖
×
20
完善资料,
赚取积分