您好,登錄后才能下訂單哦!
stm32 usart相關(guān)的問(wèn)題及解決思路是什么,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
如果此時(shí)USART正在發(fā)送數(shù)據(jù),對(duì)USART_DR寄存器的寫(xiě)操作把數(shù)據(jù)存進(jìn)TDR寄存器,并
在當(dāng)前傳輸結(jié)束時(shí)把該數(shù)據(jù)復(fù)制進(jìn)移位寄存器。
如果此時(shí)USART沒(méi)有在發(fā)送數(shù)據(jù),處于空閑狀態(tài),對(duì)USART_DR寄存器的寫(xiě)操作直接把數(shù)
據(jù)放進(jìn)移位寄存器, 數(shù)據(jù)傳輸開(kāi)始, TXE位立即被置起。 當(dāng)一幀發(fā)送完成時(shí) (停止位發(fā)送后),
TC位被置起,并且如果USART_CR1寄存器中的TCIE位被置起時(shí),中斷產(chǎn)生。
先讀一下USART_SR寄存器,再寫(xiě)一下USART_DR寄存器,可以完成對(duì)TC位的清零。
注意: TC位也可以通過(guò)對(duì)它軟件寫(xiě)0來(lái)清除。此清零方式只在多緩沖器通信模式下推薦使用。
當(dāng)一字符被接收到時(shí),
z RXNE位被置位。它表明移位寄存器的內(nèi)容被轉(zhuǎn)移到RDR。換句話說(shuō),數(shù)據(jù)已經(jīng)被接收
并且可以被讀出(包括與之有關(guān)的錯(cuò)誤標(biāo)志)。
z 如果RXNEIE位被設(shè)置,產(chǎn)生中斷。
z 在接收期間如果檢測(cè)到幀錯(cuò)誤,噪音或溢出錯(cuò)誤,錯(cuò)誤標(biāo)志將被置起,
z 在多緩沖器通信時(shí), RXNE在每個(gè)字節(jié)接收后被置起,并由DMA對(duì)數(shù)據(jù)寄存器的讀操作
而清零。
z 在單緩沖器模式里,由軟件讀USART_DR寄存器完成對(duì)RXNE位清除。 RXNE標(biāo)志也可
以通過(guò)對(duì)它寫(xiě)0來(lái)清除。 RXNE位必須在下一字符接收結(jié)束前被清零,以避免溢出錯(cuò)誤。
注意: 在接收數(shù)據(jù)時(shí), RE位不應(yīng)該被復(fù)位。如果RE位在接收時(shí)被清零,當(dāng)前字節(jié)的接收被丟失
溢出錯(cuò)誤
如果RXNE還沒(méi)有被復(fù)位,又接收到一個(gè)字符,則發(fā)生溢出錯(cuò)誤。數(shù)據(jù)只有當(dāng)RXNE位被清
零后才能從移位寄存器轉(zhuǎn)移到RDR寄存器。 RXNE標(biāo)記是接收到每個(gè)字節(jié)后被置位的。如果
下一個(gè)數(shù)據(jù)已被收到或先前DMA請(qǐng)求還沒(méi)被服務(wù)時(shí), RXNE標(biāo)志仍是置起的, 溢出錯(cuò)誤產(chǎn)生。
當(dāng)溢出錯(cuò)誤產(chǎn)生時(shí):
z ORE位被置位。
z RDR內(nèi)容將不會(huì)丟失。讀USART_DR寄存器仍能得到先前的數(shù)據(jù)。
z 移位寄存器中以前的內(nèi)容將被覆蓋。隨后接收到的數(shù)據(jù)都將丟失。
z 如果RXNEIE位被設(shè)置或EIE和DMAR位都被設(shè)置,中斷產(chǎn)生。
z 順序執(zhí)行對(duì)USART_SR和USART_DR寄存器的讀操作,可復(fù)位ORE位
注意: 當(dāng)ORE位置位時(shí),表明至少有1個(gè)數(shù)據(jù)已經(jīng)丟失。有兩種可能性:
如果RXNE=1,上一個(gè)有效數(shù)據(jù)還在接收寄存器RDR上,可以被讀出。
如果RXNE=0,這意味著上一個(gè)有效數(shù)據(jù)已經(jīng)被讀走, RDR已經(jīng)沒(méi)有東西可讀。當(dāng)上一個(gè)有
效數(shù)據(jù)在RDR中被讀取的同時(shí)又接收到新的(也就是丟失的)數(shù)據(jù)時(shí),此種情況可能發(fā)生。
在讀序列期間(在USART_SR寄存器讀訪問(wèn)和USART_DR讀訪問(wèn)之間)接收到新的數(shù)據(jù),
此種情況也可能發(fā)生。
關(guān)于stm32 usart相關(guān)的問(wèn)題及解決思路是什么問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。