找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5760|回复: 6
打印 上一主题 下一主题
收起左侧

stm32串口3种发送方式

[复制链接]
跳转到指定楼层
楼主
ID:128229 发表于 2016-6-29 20:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
第一种 USART_IT_TXE(发送寄存器空中断) 顾名思义,一旦寄存器空了 就会中断一次,为了防止一直进该中断或者不断往该寄存器装载数据,
在不装载数据时,一般需要做如下操作:
1.初始化的时候,屏蔽该中断
USART_ITConfig(USARTx, USART_IT_TXE, DISABLE);
2.要发送数据前,使能该中断
USART_ITConfig(USARTx, USART_IT_TXE, ENABLE);
3.发送数据结束后,屏蔽该中断
USART_ITConfig(USARTx, USART_IT_TXE, DISABLE);
第二种 USART_IT_TC(发送完成中断) 意为:发送寄存器发送完成之后,会进一次中断,它不像发送寄存器空中断,这时填入下一个数据,等到发送完成后再一次进入中断。这里需要注意的一点是,为了防止每次发生的第一个数据丢失,需要事先将该标志清零,USART_ClearFlag(USART2,USART_FLAG_TC)。
第三种方式采用DMA通道发送,具体的需要日后介绍。
另外不管是哪种发送方式,需要一提的是倘若用于485通信时,一定要检测USART_FLAG_TC,即进入一次发送完成标志,才可以切换接收模式,否则会造成最后一个字节未发出。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:128966 发表于 2016-7-2 20:07 | 只看该作者
谢谢奉献
回复

使用道具 举报

板凳
ID:339320 发表于 2020-12-26 16:09 | 只看该作者
谢谢,很有用
回复

使用道具 举报

地板
ID:169559 发表于 2020-12-26 21:22 | 只看该作者
另外不管是哪种发送方式,需要一提的是倘若用于485通信时,一定要检测USART_FLAG_TC,即进入一次发送完成标志,才可以切换接收模式,否则会造成最后一个字节未发出。

谢谢谢谢!刚好遇到这个问题,等我试试!
回复

使用道具 举报

5#
ID:169559 发表于 2020-12-28 14:47 | 只看该作者
经过楼主的提醒,成功解决RS485发送不出最后一个字节的问题!非常感谢!
回复

使用道具 举报

6#
ID:108573 发表于 2020-12-31 08:23 | 只看该作者
多谢楼主,书上教的都是大方向,细节才是成功的关键
回复

使用道具 举报

7#
ID:120677 发表于 2020-12-31 15:37 | 只看该作者
写得简单了
回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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