最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

STM32串口接收不定長(zhǎng)數(shù)據(jù)原理與源程序

出處:21ic 發(fā)布于:2018-07-09 11:52:30

  今天說(shuō)一下STM32單片機(jī)的接收不定長(zhǎng)度字節(jié)數(shù)據(jù)的方法。由于STM32單片機(jī)帶IDLE中斷,所以利用這個(gè)中斷,可以接收不定長(zhǎng)字節(jié)的數(shù)據(jù),由于STM32屬于ARM單片機(jī),所以這篇文章的方法也適合其他的ARM單片機(jī)。
    IDLE中斷什么時(shí)候發(fā)生?
  IDLE就是串口收到一幀數(shù)據(jù)后,發(fā)生的中斷。什么是一幀數(shù)據(jù)呢?比如說(shuō)給單片機(jī)發(fā)來(lái)1個(gè)字節(jié),或者發(fā)來(lái)8個(gè)字節(jié),這些發(fā)來(lái)的數(shù)據(jù),就稱為一幀數(shù)據(jù),也可以叫做一包數(shù)據(jù)。
  如何判斷一幀數(shù)據(jù)結(jié)束,就是我們今天討論的問(wèn)題。因?yàn)楹芏囗?xiàng)目中都要用到這個(gè),因?yàn)橹挥薪邮盏揭粠瑪?shù)據(jù)以后,你才可以判斷這次收了幾個(gè)字節(jié)和每個(gè)字節(jié)的內(nèi)容是否符合協(xié)議要求。
  看了前面IDLE中斷的定義,你就會(huì)明白了,一幀數(shù)據(jù)結(jié)束后,就會(huì)產(chǎn)生IDLE中斷。這個(gè)中斷真是太TMD有用了。省去了好多判斷的麻煩。
  如何配置好IDLE中斷?
  下面我們就配置好串口IDLE中斷吧。


  這是串口CR1寄存器,其中,對(duì)bit4寫1開(kāi)啟IDLE中斷,對(duì)bit5寫1開(kāi)啟接收數(shù)據(jù)中斷。(注意:不同系列的STM32,對(duì)應(yīng)的寄存器位可能不同)
  (RXNE中斷和IDLE中斷的區(qū)別?
  當(dāng)接收到1個(gè)字節(jié),就會(huì)產(chǎn)生RXNE中斷,當(dāng)接收到一幀數(shù)據(jù),就會(huì)產(chǎn)生IDLE中斷。比如給單片機(jī)性發(fā)送了8個(gè)字節(jié),就會(huì)產(chǎn)生8次RXNE中斷,1次IDLE中斷。)


  這是狀態(tài)寄存器,當(dāng)串口接收到數(shù)據(jù)時(shí),bit5就會(huì)自動(dòng)變成1,當(dāng)接收完一幀數(shù)據(jù)后,bit4就會(huì)變成1.
  需要注意的是,在中斷函數(shù)里面,需要把對(duì)應(yīng)的位清0,否則會(huì)影響下數(shù)據(jù)的接收。比如RXNE接收數(shù)據(jù)中斷,只要把接收到的一個(gè)字節(jié)讀出來(lái),就會(huì)清除這個(gè)中斷。IDLE中斷,如何是F0系列的單片機(jī),需要用ICR寄存器來(lái)清除,如果是F1系列的單片機(jī),清除方法是“先讀SR寄存器,再讀DR寄存器”。(我怎么知道?手冊(cè)上寫的)
  下面以STM32F103為例給出源程序。
  我們先來(lái)看程序中的主要部分。
  串口初始化函數(shù)片段


  如果你原來(lái)的串口初始化函數(shù)具有打開(kāi)串口接收中斷的話,實(shí)際上就是在初始化函數(shù)中多了一條打開(kāi)空閑中斷的語(yǔ)句。
  串口中斷函數(shù)
  串口中斷函數(shù)里面,重要的兩條語(yǔ)句,就是上圖中圈出來(lái)的兩條語(yǔ)句。條語(yǔ)句用來(lái)判斷是否接收到1個(gè)字節(jié),第二條語(yǔ)句用來(lái)判斷是否接收到1幀數(shù)據(jù)。(是不是感覺(jué)超級(jí)方便?媽媽再也不用擔(dān)心我如何判斷是否接收完1幀數(shù)據(jù)了。)
  主函數(shù)


  我寫的這個(gè)主函數(shù),是用來(lái)驗(yàn)證接收的正確性的。RxCounter表示的是這一幀數(shù)據(jù)有幾個(gè)字節(jié),接收完一幀數(shù)據(jù),會(huì)在中斷函數(shù)里面把ReceiveState置1,然后,通過(guò)串口把接收到的數(shù)據(jù)發(fā)送回串口。這樣,既驗(yàn)證了接收了多少字節(jié)的正確性,又驗(yàn)證了接收到的數(shù)據(jù)是否正確。
  上圖是結(jié)果驗(yàn)證。

 

關(guān)鍵詞:STM32串口接收不定長(zhǎng)數(shù)據(jù)原理與源程序STM32串口

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://www.udpf.com.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機(jī)號(hào)碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時(shí)間周一至周五
9:00-17:30

關(guān)注官方微信號(hào),
第一時(shí)間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫(kù)提出的寶貴意見(jiàn),您的參與是維庫(kù)提升服務(wù)的動(dòng)力!意見(jiàn)一經(jīng)采納,將有感恩紅包奉上哦!