找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5779|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

stm32串口3種發(fā)送方式

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:128229 發(fā)表于 2016-6-29 20:28 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
第一種 USART_IT_TXE(發(fā)送寄存器空中斷) 顧名思義,一旦寄存器空了 就會(huì)中斷一次,為了防止一直進(jìn)該中斷或者不斷往該寄存器裝載數(shù)據(jù),
在不裝載數(shù)據(jù)時(shí),一般需要做如下操作:
1.初始化的時(shí)候,屏蔽該中斷
USART_ITConfig(USARTx, USART_IT_TXE, DISABLE);
2.要發(fā)送數(shù)據(jù)前,使能該中斷
USART_ITConfig(USARTx, USART_IT_TXE, ENABLE);
3.發(fā)送數(shù)據(jù)結(jié)束后,屏蔽該中斷
USART_ITConfig(USARTx, USART_IT_TXE, DISABLE);
第二種 USART_IT_TC(發(fā)送完成中斷) 意為:發(fā)送寄存器發(fā)送完成之后,會(huì)進(jìn)一次中斷,它不像發(fā)送寄存器空中斷,這時(shí)填入下一個(gè)數(shù)據(jù),等到發(fā)送完成后再一次進(jìn)入中斷。這里需要注意的一點(diǎn)是,為了防止每次發(fā)生的第一個(gè)數(shù)據(jù)丟失,需要事先將該標(biāo)志清零,USART_ClearFlag(USART2,USART_FLAG_TC)。
第三種方式采用DMA通道發(fā)送,具體的需要日后介紹。
另外不管是哪種發(fā)送方式,需要一提的是倘若用于485通信時(shí),一定要檢測USART_FLAG_TC,即進(jìn)入一次發(fā)送完成標(biāo)志,才可以切換接收模式,否則會(huì)造成最后一個(gè)字節(jié)未發(fā)出。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:128966 發(fā)表于 2016-7-2 20:07 | 只看該作者
謝謝奉獻(xiàn)
回復(fù)

使用道具 舉報(bào)

板凳
ID:339320 發(fā)表于 2020-12-26 16:09 | 只看該作者
謝謝,很有用
回復(fù)

使用道具 舉報(bào)

地板
ID:169559 發(fā)表于 2020-12-26 21:22 | 只看該作者
另外不管是哪種發(fā)送方式,需要一提的是倘若用于485通信時(shí),一定要檢測USART_FLAG_TC,即進(jìn)入一次發(fā)送完成標(biāo)志,才可以切換接收模式,否則會(huì)造成最后一個(gè)字節(jié)未發(fā)出。

謝謝謝謝!剛好遇到這個(gè)問題,等我試試!
回復(fù)

使用道具 舉報(bào)

5#
ID:169559 發(fā)表于 2020-12-28 14:47 | 只看該作者
經(jīng)過樓主的提醒,成功解決RS485發(fā)送不出最后一個(gè)字節(jié)的問題!非常感謝!
回復(fù)

使用道具 舉報(bào)

6#
ID:108573 發(fā)表于 2020-12-31 08:23 | 只看該作者
多謝樓主,書上教的都是大方向,細(xì)節(jié)才是成功的關(guān)鍵
回復(fù)

使用道具 舉報(bào)

7#
ID:120677 發(fā)表于 2020-12-31 15:37 | 只看該作者
寫得簡單了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表