关于串口发送字符串的问题

[复制链接]
3430|8
 楼主| hqr1021 发表于 2013-4-14 19:54 | 显示全部楼层 |阅读模式
本帖最后由 hqr1021 于 2013-4-14 19:56 编辑

本人在校小菜鸟一枚,在调试stm32串口的程序时,发现一个让我很无奈的问题。
void USART1_IRQHandler(void)
{
        u8 c;
        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
        {         
            c=USART1->DR;
                  printf("%c",c);   
        }         
}
既stm32读取字符串(其实是分N次收到一个字符),立刻发送出去,返回给PC。
问题在于,如果我用电脑主板的串口com1(默认),用众多串口调试软件都是显示乱码(发送字符除外),
但是用了RS232转USB,用USB作为com口,串口调试软件均正常。
我的猜想是串口上的问题,请问各位前辈们到底这到底是怎么回事?
PS:我在51单片机写了一个相似的程序,现象一致。stm32用的是max3232,51用的是max232.
diweo 发表于 2013-4-15 06:54 | 显示全部楼层
有没有以16进制显示看看到底发的什么东西?
ayb_ice 发表于 2013-4-15 07:51 | 显示全部楼层
串口设置对了没有
 楼主| hqr1021 发表于 2013-4-20 00:43 | 显示全部楼层
diweo 发表于 2013-4-15 06:54
有没有以16进制显示看看到底发的什么东西?

按照你的方法做了,如果发单字符,串口助手发送和接收一致。但发两个以上字符基本上是不一致。如果重复发送字符串,那么串口助手接收显示的16进制具有随机性(与发送不一致)
 楼主| hqr1021 发表于 2013-4-20 00:46 | 显示全部楼层
ayb_ice 发表于 2013-4-15 07:51
串口设置对了没有

请问怎么设置呢?我已经把com1(主板默认串口)变成与单片机波特率相同,仍然不行。
ayb_ice 发表于 2013-4-20 08:59 | 显示全部楼层
hqr1021 发表于 2013-4-20 00:46
请问怎么设置呢?我已经把com1(主板默认串口)变成与单片机波特率相同,仍然不行。 ...

数据长度,奇偶检验等
 楼主| hqr1021 发表于 2013-4-20 09:32 | 显示全部楼层
ayb_ice 发表于 2013-4-20 08:59
数据长度,奇偶检验等

上面是电脑管理设备COM设置,下面是串口助手设置,请问哪里还需要设置?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
diweo 发表于 2013-4-20 20:07 | 显示全部楼层
程序里面的寄存器设置是否和上图一致?
 楼主| hqr1021 发表于 2013-4-20 20:55 | 显示全部楼层
diweo 发表于 2013-4-20 20:07
程序里面的寄存器设置是否和上图一致?

一致的,不一致我用串口转USB,应该不会出现正常情况。我的情况是串口转USB通信正常,但直接用串口通信不正常,所以让我很在意。。。但知识有限,特别是硬件知识。故求教前辈们。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

6

帖子

1

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