[技术问答] N76E003串口的奇怪问题

[复制链接]
1217|12
 楼主| jackcat 发表于 2025-6-27 11:15 | 显示全部楼层 |阅读模式
用的新唐BSP里的UART0例子。在Common.c里新加一个发送字符串的子函数:
void Send_String_To_UART0( UINT8 *string )
{
        while( *string )
        {
                Send_Data_To_UART0( *string++ );
        }
}

然后在uart.c里面调用它。再延时了一下。
void main (void)
{

#if 0        
    InitialUART0_Timer1(9600);           //UART0 Baudrate initial,T1M=0,SMOD=0
    while(1)
    Send_Data_To_UART0(0x55);
#else
                InitialUART0_Timer3(19200);
    while(1)
                {        
    //Send_Data_To_UART0(0x55);
                //Send_Data_To_UART0(0x0a);
                Send_String_To_UART0("test\r\n");
                Timer0_Delay1ms(3000);
                }
#endif

keilc仿真输出是 test  没错。 硬件测试,在串口调试助手上 却成了 QStT 。

哪位高手知道是怎么回事吗?
yhu1983 发表于 2025-7-14 13:27 | 显示全部楼层
你直接拿例程试试看呢?
我用你这个代码试了是正常的 1.png
旧时光放映机 发表于 2025-7-15 11:29 | 显示全部楼层
看起来像是字符编码的问题,串口调试助手可能默认使用的是某种编码,而你的代码发送的是ASCII码。检查一下串口调试助手的编码设置是否与你的代码发送的编码一致。
probedog 发表于 2025-7-15 17:03 | 显示全部楼层
波特率不匹配吧。
flycamelaaa 发表于 2025-7-15 18:04 | 显示全部楼层
检查TX/RX引脚连接是否正确。
powerantone 发表于 2025-7-15 18:05 | 显示全部楼层
检查上拉/下拉电阻。
stormwind123 发表于 2025-7-15 19:05 | 显示全部楼层
若UART中断与其他中断冲突,可能导致数据丢失或乱码。
probedog 发表于 2025-7-15 22:06 | 显示全部楼层
临时禁用其他中断,测试是否仍出现乱码。
玛尼玛尼哄 发表于 2025-7-16 11:22 | 显示全部楼层
误码率高?设置好时钟看看。
玛尼玛尼哄 发表于 2025-7-16 11:31 | 显示全部楼层
误码率高?设置好时钟看看。
classroom 发表于 2025-7-16 17:08 | 显示全部楼层
检查延时函数影响,Timer0_Delay1ms 可能占用定时器资源,影响波特率发生器。
我是一颗胖蘑菇 发表于 2025-7-17 18:35 | 显示全部楼层
看起来像是编码或者波特率设置不一致导致的。你检查一下串口调试助手的波特率设置是否与你的代码中的波特率设置相匹配。
少女诗篇 发表于 2025-9-26 14:33 | 显示全部楼层
N76E003 串口常见 “奇怪问题” 多因配置或硬件细节:如波特率误差超范围(未按晶振算分频值)、TX/RX 引脚接反或虚焊、中断优先级冲突致数据丢失,也可能是电源纹波干扰、串口模式(如 8N1)配置错误,或未使能对应的串口时钟,需逐项排查。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

1852

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部