標題:
stm32串口3種發(fā)送方式
[打印本頁]
作者:
電子黑
時間:
2016-6-29 20:28
標題:
stm32串口3種發(fā)送方式
第一種 USART_IT_TXE(發(fā)送寄存器空中斷) 顧名思義,一旦寄存器空了 就會中斷一次,為了防止一直進該中斷或者不斷往該寄存器裝載數(shù)據(jù),
在不裝載數(shù)據(jù)時,一般需要做如下操作:
1.初始化的時候,屏蔽該中斷
USART_ITConfig(USARTx, USART_IT_TXE, DISABLE);
2.要發(fā)送數(shù)據(jù)前,使能該中斷
USART_ITConfig(USARTx, USART_IT_TXE, ENABLE);
3.發(fā)送數(shù)據(jù)結束后,屏蔽該中斷
USART_ITConfig(USARTx, USART_IT_TXE, DISABLE);
第二種 USART_IT_TC(發(fā)送完成中斷) 意為:發(fā)送寄存器發(fā)送完成之后,會進一次中斷,它不像發(fā)送寄存器空中斷,這時填入下一個數(shù)據(jù),等到發(fā)送完成后再一次進入中斷。這里需要注意的一點是,為了防止每次發(fā)生的第一個數(shù)據(jù)丟失,需要事先將該標志清零,USART_ClearFlag(USART2,USART_FLAG_TC)。
第三種方式采用DMA通道發(fā)送,具體的需要日后介紹。
另外不管是哪種發(fā)送方式,需要一提的是倘若用于485通信時,一定要檢測USART_FLAG_TC,即進入一次發(fā)送完成標志,才可以切換接收模式,否則會造成最后一個字節(jié)未發(fā)出。
作者:
hbthgs
時間:
2016-7-2 20:07
謝謝奉獻
作者:
aiwenxue999
時間:
2020-12-26 16:09
謝謝,很有用
作者:
sfd123
時間:
2020-12-26 21:22
另外不管是哪種發(fā)送方式,需要一提的是倘若用于485通信時,一定要檢測USART_FLAG_TC,即進入一次發(fā)送完成標志,才可以切換接收模式,否則會造成最后一個字節(jié)未發(fā)出。
謝謝謝謝!剛好遇到這個問題,等我試試!
作者:
sfd123
時間:
2020-12-28 14:47
經(jīng)過樓主的提醒,成功解決RS485發(fā)送不出最后一個字節(jié)的問題!非常感謝!
作者:
神出沒
時間:
2020-12-31 08:23
多謝樓主,書上教的都是大方向,細節(jié)才是成功的關鍵
作者:
chjchj816
時間:
2020-12-31 15:37
寫得簡單了
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1