自学内容网 自学内容网

串口问题汇总:串口发送乱码,重定义使用printf ,输出顺序出错,缓存区思想,串口项目应用

1.c51使用串口出现顺序被覆盖的情况,也就是输出time 最后输出的却是te  

这是因为你没有等待上一个数据发送就开始发送下一个数据就会导致数据篡位

2.c51想使用串口重定义使用printf

首先c51是自带stdio.h不需要像32那样点击 include lib选项,你直接改putchar函数即可

void Uart_SendChar(unsigned char  dat)
{
    SBUF = dat;  
while(TI);
    TI = 0; 
}
char putchar(unsigned char c)//重定向
{
Uart_SendChar(c);
return c;
}

你要把底层发送字节函数改成你自己单片机的就行

3.串口发送中文乱码

这是因为你的编码格式和你的串口助手编码格式不一样,或者你的编码格式压根不支持中文,这里还要特别注意,keil显示乱码那是因为你翻译器解读代码,你改正确了以后并不代表你串口输出也是正确的,因为编译器和翻译器就是两个不同的东西,翻译器改了编译器不一定合适

那如何改编译器的格式呢

设置里设置就行

4.printf函数内部的问题,我不知道为啥,我重定义的51串口发送会出问题

这样就会有问题

这个就没问题

5.


原文地址:https://blog.csdn.net/2301_80317247/article/details/142494746

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!