OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2082|回复: 7

串口问题请教

[复制链接]

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-6-21 16:39:18 | 显示全部楼层 |阅读模式
10金钱
1.cpu的串口没有接232芯片,是否可以和电脑直接通信?
2.如果串口一的TX与RX短接,我在主循环里面延时2s让串口一发送"qwer#",在串口一中断函数里加入取反led灯判断是否进入中断,结果没有进入。问:是否可以这样连接测试串口一
3.如果波特率、数据位、停止位这些设置没问题(串口助手设置也没问题),导致串口助手接收显示乱码的原因可能有哪些?

最佳答案

查看完整内容[请看2#楼]

1,可以的,有一种USB转TTL电平的小设备。 2,理论上可以的,自己给自己传,串口通信是全双工的,可以。、 3,校验位设置的一样吗?还有就是数据类型,是16进制还是字符型。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

31

主题

265

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
413
金钱
413
注册时间
2018-1-9
在线时间
65 小时
发表于 2018-6-21 16:39:19 | 显示全部楼层
1,可以的,有一种USB转TTL电平的小设备。
2,理论上可以的,自己给自己传,串口通信是全双工的,可以。、
3,校验位设置的一样吗?还有就是数据类型,是16进制还是字符型。
回复

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2018-6-21 17:43:36 | 显示全部楼层
1.没有232芯片不能和电脑直接通信。
2.TX和RX短路就属于自发自收,一般发的瞬间就会收到,如果没有收到就说明程序有问题。
3.要和电脑通信需要USB转串口模块,然后和单片机上232芯片引脚连。或者用USB转TTL电平的模块,就可以直接用模块连接单片机IO口。电脑接收乱码就检查USB转串口驱动有没有问题,或者多换几个串口助手试试。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-6-22 01:26:50 | 显示全部楼层
结合1,2楼就是答案
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
 楼主| 发表于 2018-6-22 08:10:39 | 显示全部楼层
jinfeihan57 发表于 2018-6-21 16:39
1,可以的,有一种USB转TTL电平的小设备。
2,理论上可以的,自己给自己传,串口通信是全双工的,可以。、 ...

嗯,谢谢,校验位这些都一样
比如我用串口这样发送一个数据:
Res = USART_ReceiveData(USART1);
USART_SendData(USART2,Res);
要考虑Res是字符型还是16进制形式吗?我定义的是u8的Res,一直都是这样定义的
但是USART_ReceiveData这个函数返回的是u16类型的数据
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
 楼主| 发表于 2018-6-22 09:40:35 | 显示全部楼层
HXYDJ 发表于 2018-6-21 17:43
1.没有232芯片不能和电脑直接通信。
2.TX和RX短路就属于自发自收,一般发的瞬间就会收到,如果没有收到就 ...

        我把TX和RX短接,主循环里写了如下程序:

Uart1_SendData8(0x01);             
k = Uart1_RevData8();  
if(k == 1)
{
    LED1_ON;
}

调试时卡在Uart1_RevData8函数
u8 Uart2_RevData8()
{
        while(!(USART2->SR & 1<<5))   //已准备好读取接收到的数据
        {
                ;
        }
        return USART2->DR;
}
               
回复

使用道具 举报

31

主题

265

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
413
金钱
413
注册时间
2018-1-9
在线时间
65 小时
发表于 2018-6-22 10:21:24 | 显示全部楼层
qiuzhicheng 发表于 2018-6-22 08:10
嗯,谢谢,校验位这些都一样
比如我用串口这样发送一个数据:
Res = USART_ReceiveData(USART1);

我说的16进制还是字符型,意思是指,串口助手的接受设置。不过你说的,也有可能。可以写程序测试一下很简单的
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
 楼主| 发表于 2018-6-22 10:32:54 | 显示全部楼层
jinfeihan57 发表于 2018-6-22 10:21
我说的16进制还是字符型,意思是指,串口助手的接受设置。不过你说的,也有可能。可以写程序测试一下很简 ...

串口助手一般都是字符显示吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-26 04:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表