OpenEdv-开源电子网

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

STM32串口通信问题

[复制链接]

11

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2016-9-13
在线时间
17 小时
发表于 2017-2-28 11:01:12 | 显示全部楼层 |阅读模式
想问问原子哥,我参照你的串口通信的例子,好像有个0x0d 0x0a的小通信协议吧,发送端我是循环发送的,但接收端如果只想读取一遍数据怎么半呢,现在是循环获取。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7549
金钱
7549
注册时间
2016-11-30
在线时间
642 小时
发表于 2017-2-28 13:24:32 | 显示全部楼层
你的意思是别人给你打电话你不接?那就关机喽!一样,你直接关中断就不会收到数据啦!
回复 支持 反对

使用道具 举报

11

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2016-9-13
在线时间
17 小时
 楼主| 发表于 2017-2-28 13:31:27 | 显示全部楼层
lvkanger 发表于 2017-2-28 13:24
你的意思是别人给你打电话你不接?那就关机喽!一样,你直接关中断就不会收到数据啦!

你的意思是在程序里面控制把中断给关掉吗?语句是什么样的?
回复 支持 反对

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7549
金钱
7549
注册时间
2016-11-30
在线时间
642 小时
发表于 2017-2-28 13:51:08 | 显示全部楼层
直接在中断里关中断就好啦,接收成功之后就关中断。调用你的开中断的函数,把参数改为DISABLE就可以了!
回复 支持 反对

使用道具 举报

11

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2016-9-13
在线时间
17 小时
 楼主| 发表于 2017-2-28 14:10:20 | 显示全部楼层
lvkanger 发表于 2017-2-28 13:51
直接在中断里关中断就好啦,接收成功之后就关中断。调用你的开中断的函数,把参数改为DISABLE就可以了!

我现在在接收成功后把中断关掉了,但我好想接收的字符少了第一个字节,试几次都一样,头8bit掉了。。。什么原因呢
回复 支持 反对

使用道具 举报

11

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2016-9-13
在线时间
17 小时
 楼主| 发表于 2017-2-28 14:15:02 | 显示全部楼层
问题解决了
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)!=SET);//等待发送结束       
如果是
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
就会少接收第一个字符
不知道什么原因呢       
回复 支持 反对

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7549
金钱
7549
注册时间
2016-11-30
在线时间
642 小时
发表于 2017-3-1 09:30:13 | 显示全部楼层
yaojunjie 发表于 2017-2-28 14:15
问题解决了
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)!=SET);//等待发送结束       
如果是

多字节传输时要判断TXE,单字节TXE,TC都可以!
回复 支持 反对

使用道具 举报

11

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2016-9-13
在线时间
17 小时
 楼主| 发表于 2017-3-1 10:17:27 | 显示全部楼层
lvkanger 发表于 2017-3-1 09:30
多字节传输时要判断TXE,单字节TXE,TC都可以!

谢谢啦
       还有个问题想问下你,串口在发送数据的同时可以接收数据吗?我记得串口是全双工通信的啊,还是说在发送了数据后要停止发送才能再接收数据?现在我在发送端用定时器通过串口发送数据,接收端收到数据后,把接收到的反馈数据发回给发送端,但这个时候发送端还在给接收端发送数据;我测试发送端通过同一个串口没办法接收到数据,想问问呢是什么原因该怎么解决啊?
回复 支持 反对

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7549
金钱
7549
注册时间
2016-11-30
在线时间
642 小时
发表于 2017-3-1 11:11:34 | 显示全部楼层
按道理没有问题的啊,接收是在中断里边完成的,应该能接收到啊!
回复 支持 反对

使用道具 举报

11

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2016-9-13
在线时间
17 小时
 楼主| 发表于 2017-3-1 14:10:26 | 显示全部楼层
lvkanger 发表于 2017-3-1 11:11
按道理没有问题的啊,接收是在中断里边完成的,应该能接收到啊!

可以给呢联系方式吗?想在qq上请教你下
回复 支持 反对

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7549
金钱
7549
注册时间
2016-11-30
在线时间
642 小时
发表于 2017-3-2 10:42:46 | 显示全部楼层
yaojunjie 发表于 2017-3-1 14:10
可以给呢联系方式吗?想在qq上请教你下

我们公司涉密单位,办公的电脑是不能上网的,只能到上网区去上网。白天基本就是用手机qq476031767
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-10 00:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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