STM32平台下DMA传输ADC数据 采用UCOSII 在任务中用printf打印float浮点数出现打印0和乱码问题
printf的重定向代码是 如下。
本程序实现的功能是DMA传输3路ADC,同时将ADC采样的数据在UCOSII的其中一个任务中实现。
三种情况:1、将打印放在UCOS的任务中打印浮点数格式
2、将打印放在UCOS的任务中打印十六进制格式
3、将打印放在主循环中(即未启动USOS等的初始化,相当于裸跑)
(一)异常现象:当在UCOS的某一个任务中用printf打印数据 打印浮点数格式时 ,串口打印出现如下现象:
(二)程序不变,只改变printf的打印格式,如下图红框所示,打印的十六进制数据如下。
(三)
将打印放在主循环 即裸跑,打印浮点数格式,数据完全正常
以上为发现的问题BUG。
参照网上资料,将堆栈8字节对其即可 。我将__align(8)写在了 main.c文件开头,已生效,打印浮点数正常