OpenEdv-开源电子网

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

大神们,我用串口发送字符串,怎么只能发送首字符

[复制链接]

5

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2016-10-28
在线时间
25 小时
发表于 2017-3-16 22:46:19 | 显示全部楼层 |阅读模式
3金钱
QQ截图20170316224110.png QQ截图20170316224156.png QQ截图20170316224213.png 各位大神,我用串口字符串,用串口调试助手看发送的字符,发现只能发送首字符,这是什么情况?

最佳答案

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

USART_GetFlagStatus(USART1,USART_IT_TXE) != SET 这里的标志位宏定义填错了,应该是USART_FLAG_TXE,不是USART_IT_TXE
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

290

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1130
金钱
1130
注册时间
2015-8-4
在线时间
107 小时
发表于 2017-3-16 22:46:20 | 显示全部楼层
USART_GetFlagStatus(USART1,USART_IT_TXE) != SET 这里的标志位宏定义填错了,应该是USART_FLAG_TXE,不是USART_IT_TXE
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-3-16 23:44:43 | 显示全部楼层
看看你的判断发送结束语句对不对? while等待那里
回复

使用道具 举报

5

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2016-10-28
在线时间
25 小时
 楼主| 发表于 2017-3-16 23:56:39 | 显示全部楼层
正点原子 发表于 2017-3-16 23:44
看看你的判断发送结束语句对不对? while等待那里

原子哥这句“while(USART_GetFlagStatus(USART1, USART_IT_TXE) != SET );”我把里面USART1, USART_IT_TXE 改成USART1, USART_IT_TC、USART_IT_RXNE都试过了,都不对
回复

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7716
金钱
7716
注册时间
2016-11-30
在线时间
652 小时
发表于 2017-3-17 08:59:52 | 显示全部楼层
The·3rd 发表于 2017-3-16 23:56
原子哥这句“while(USART_GetFlagStatus(USART1, USART_IT_TXE) != SET );”我把里面USART1, USART_IT_TX ...

SET? RESET吧!
回复

使用道具 举报

8

主题

156

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1553
金钱
1553
注册时间
2016-11-21
在线时间
411 小时
发表于 2017-3-17 09:06:41 | 显示全部楼层

RESET?
回复

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7716
金钱
7716
注册时间
2016-11-30
在线时间
652 小时
发表于 2017-3-17 09:16:15 | 显示全部楼层

哦,是SET,理解错了!标志判断USART_FLAG_TC试试
回复

使用道具 举报

9

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2017-1-6
在线时间
32 小时
发表于 2017-3-17 09:16:34 | 显示全部楼层
在USART_DR寄存器中写入最后一个数据字后,要等待TC=1,它表示最后一个数据帧的传输结束。当需要关闭USART或需要进入停机模式之前,需要确认传输结束,避免破坏最后一次传输。
                          USART_SendData(USART1, a[i]);
                        while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
回复

使用道具 举报

4

主题

290

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1130
金钱
1130
注册时间
2015-8-4
在线时间
107 小时
发表于 2017-3-17 09:34:31 | 显示全部楼层
另外ST官方的发送函数里面判断的是USART_FLAG_TC,不建议用TXE
回复

使用道具 举报

5

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2016-10-28
在线时间
25 小时
 楼主| 发表于 2017-3-19 10:28:26 | 显示全部楼层
kingnike 发表于 2017-3-17 09:34
另外ST官方的发送函数里面判断的是USART_FLAG_TC,不建议用TXE

谢谢大神,我太粗心了,按照你说的问题解决了,太感谢了
回复

使用道具 举报

5

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2016-10-28
在线时间
25 小时
 楼主| 发表于 2017-3-19 10:29:22 | 显示全部楼层
爱娟娟 发表于 2017-3-17 09:16
在USART_DR寄存器中写入最后一个数据字后,要等待TC=1,它表示最后一个数据帧的传输结束。当需要关闭USART ...

恩恩好的,知悉了,非常感谢你啊,大神
回复

使用道具 举报

5

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2016-10-28
在线时间
25 小时
 楼主| 发表于 2017-3-19 10:29:57 | 显示全部楼层
lvkanger 发表于 2017-3-17 09:16
哦,是SET,理解错了!标志判断USART_FLAG_TC试试

非常感谢你啊,已经解决了
回复

使用道具 举报

5

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2016-10-28
在线时间
25 小时
 楼主| 发表于 2017-3-19 10:31:28 | 显示全部楼层
正点原子 发表于 2017-3-16 23:44
看看你的判断发送结束语句对不对? while等待那里

原子哥我太粗心了,判断发送结束语句是不对,谢谢原子哥
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-23 06:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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