0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32串口的發(fā)送和接收

麥辣雞腿堡 ? 來源:CSDN博客 ? 作者:藕粉- ? 2023-11-10 16:04 ? 次閱讀

USART是STM32內(nèi)部集成的硬件外設(shè),可以根據(jù)數(shù)據(jù)寄存器的一個字節(jié)數(shù)據(jù)自動生成數(shù)據(jù)幀時序,從TX引腳發(fā)送出去,也可以自動接收RX引腳的數(shù)據(jù)幀時序,拼接成一個字節(jié)數(shù)據(jù),存放在數(shù)據(jù)寄存器里。

當(dāng)配置好USART的電路之后,直接讀取數(shù)據(jù)寄存器,就可以自動發(fā)送數(shù)據(jù)和接收數(shù)據(jù)了。在發(fā)送和接收的模塊有4個重要的寄存器

發(fā)送數(shù)據(jù)寄存器TDR

發(fā)送移位寄存器,把一個字節(jié)的數(shù)據(jù)一位一位的移出去

接收數(shù)據(jù)寄存器RDR

接收移位寄存器,把一個字節(jié)的數(shù)據(jù)

下方為串口的發(fā)送和接收圖解:

圖片

串口發(fā)送

在配置串口的各個參數(shù)時,可以選擇發(fā)送數(shù)據(jù)幀的數(shù)據(jù)位的大小,可選8位或9位。

串口發(fā)送數(shù)據(jù)實際上就是對發(fā)送數(shù)據(jù)寄存器TDR進(jìn)行寫操作。

  1. 當(dāng)串口發(fā)送數(shù)據(jù)時,會檢測發(fā)送移位寄存器是不是有數(shù)據(jù)正在移位,如果沒有移位,那么這個數(shù)據(jù)就會立刻轉(zhuǎn)移到發(fā)送移位寄存器里。準(zhǔn)備發(fā)送。

2.當(dāng)數(shù)據(jù)移動到移位寄存器時,會產(chǎn)生一個TXE發(fā)送寄存器空標(biāo)志位,該位描述如下。當(dāng)TXE被置1,那么就可以在TDR寫入下一個數(shù)據(jù)了。即發(fā)送下一個數(shù)據(jù)。

圖片

  1. 發(fā)送移位寄存器在發(fā)送器控制的控制下,向右移位,一位一位的把數(shù)據(jù)傳輸?shù)絋X引腳。

圖片

  1. 數(shù)據(jù)移位完成后,新的數(shù)據(jù)就會再次從TDR轉(zhuǎn)移到發(fā)送移位寄存器里來,依次重復(fù)1-3的過程。通過讀取TXE標(biāo)志位來判斷是否發(fā)送下一個數(shù)據(jù)。

串口接收

數(shù)據(jù)從RX引腳通向接收移位寄存器,在接收控制的控制下,一位一位的讀取RX的電平,把第一位放在最高位,然后右移,移位八次之后就可以接收一個字節(jié)了。

當(dāng)一個字節(jié)數(shù)據(jù)移位完成之后,這一個字節(jié)的數(shù)據(jù)就會整體的移到接收數(shù)據(jù)寄存器RDR里來。

在轉(zhuǎn)移時會置RXNE接收標(biāo)志位,即RDR寄存器非空,下方為該位的描述。當(dāng)被置1后,就說明數(shù)據(jù)可以被讀出。

圖片

下圖即為串口接收的工作流程

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5359

    瀏覽量

    120816
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7107

    瀏覽量

    89299
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10915

    瀏覽量

    356786
  • 串口通信
    +關(guān)注

    關(guān)注

    34

    文章

    1627

    瀏覽量

    55614
收藏 人收藏

    評論

    相關(guān)推薦

    STM32串口發(fā)送數(shù)據(jù)和接收數(shù)據(jù)方式總結(jié)

    STM32串口發(fā)送數(shù)據(jù)和接收數(shù)據(jù)方式總結(jié)
    的頭像 發(fā)表于 09-19 09:14 ?7847次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b><b class='flag-5'>發(fā)送</b>數(shù)據(jù)和<b class='flag-5'>接收</b>數(shù)據(jù)方式總結(jié)

    stm32串口接收串口發(fā)送的實現(xiàn)過程是怎樣的

    嵌入式的底層是如何實現(xiàn)的?stm32串口接收串口發(fā)送的實現(xiàn)過程是怎樣的?
    發(fā)表于 12-07 07:06

    基于CubeMX HAL庫的STM32串口發(fā)送接收配置過程分享

    基于CubeMX HAL庫的STM32串口發(fā)送接收配置過程分享
    發(fā)表于 12-10 06:43

    STM32串口是如何去實現(xiàn)數(shù)據(jù)發(fā)送接收

    什么是串口復(fù)位呢?STM32串口是如何去實現(xiàn)數(shù)據(jù)發(fā)送接收的?
    發(fā)表于 12-10 06:16

    STM32串口發(fā)送數(shù)據(jù)與接收數(shù)據(jù)淺析

    STM32串口發(fā)送數(shù)據(jù)最直接的方式是什么呢?STM32串口接收數(shù)據(jù)最直接的方式是什么呢?
    發(fā)表于 02-18 06:09

    STM32串口接收陀螺儀數(shù)據(jù)-2016-04-15

    stm32f103串口接收MPU6050數(shù)據(jù)
    發(fā)表于 05-23 10:24 ?21次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b><b class='flag-5'>接收</b>陀螺儀數(shù)據(jù)-2016-04-15

    STM32CUBEMX配置教程(八)STM32串口輪詢發(fā)送中斷接收+重定義+優(yōu)化

    STM32CUBEMX配置教程(八)STM32串口輪詢收發(fā)+重定義基于STM32H743VI使用STM32CUBEMX兩年了,始終覺得這個工
    發(fā)表于 11-19 13:36 ?11次下載
    <b class='flag-5'>STM32</b>CUBEMX配置教程(八)<b class='flag-5'>STM32</b><b class='flag-5'>串口</b>輪詢<b class='flag-5'>發(fā)送</b>中斷<b class='flag-5'>接收</b>+重定義+優(yōu)化

    STM32串口通訊

    STM32串口通訊USART串口通信實踐USART串口通信實踐1、實驗環(huán)境參考資料 野火官方的 《零死角玩轉(zhuǎn)STM32—F103指南者
    發(fā)表于 12-06 20:21 ?13次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b>通訊

    stm32串口代碼詳解

    stm32串口
    發(fā)表于 12-24 18:38 ?52次下載
    <b class='flag-5'>stm32</b><b class='flag-5'>串口</b>代碼詳解

    STM32踩坑:STM32串口發(fā)送亂碼問題

    STM32串口發(fā)送亂碼問題小編是一個嵌入式初學(xué)者,才學(xué)沒多久,將近兩個月的樣子,在學(xué)習(xí)過程中遇到了一些問題,在這里給大家分享一下解決方案。今天要分享的問題是 STM32
    發(fā)表于 12-24 18:40 ?10次下載
    <b class='flag-5'>STM32</b>踩坑:<b class='flag-5'>STM32</b><b class='flag-5'>串口</b><b class='flag-5'>發(fā)送</b>亂碼問題

    stm32串口

    DMA發(fā)送緩存區(qū)bsp_usart.cbsp_usart.hisr.c基于stm32f103zet6串口發(fā)送使用DMA發(fā)送大致說明USART
    發(fā)表于 12-24 18:55 ?20次下載
    <b class='flag-5'>stm32</b><b class='flag-5'>串口</b>

    STM32串口發(fā)送數(shù)據(jù)和接收數(shù)據(jù)方式總結(jié)(轉(zhuǎn))

    之前寫了篇關(guān)于ESP8266使用AT指令進(jìn)行互相通訊的實驗,在寫STM32串口接發(fā)數(shù)據(jù)的程序中,覺得有必要將之前學(xué)的有關(guān)于串口方面的使用經(jīng)歷加以總結(jié)。串口
    發(fā)表于 12-24 18:59 ?18次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b><b class='flag-5'>發(fā)送</b>數(shù)據(jù)和<b class='flag-5'>接收</b>數(shù)據(jù)方式總結(jié)(轉(zhuǎn))

    21電賽02 stm32串口發(fā)送接收

    stm32串口接收具體協(xié)議看之前的01//頭文件部分typedef struct{ long int x_cm; long int y_cm; int openmv;}OPMV_info
    發(fā)表于 12-24 19:16 ?0次下載
    21電賽02 <b class='flag-5'>stm32</b><b class='flag-5'>串口</b><b class='flag-5'>發(fā)送</b><b class='flag-5'>接收</b>

    一個嚴(yán)謹(jǐn)?shù)?b class='flag-5'>STM32串口DMA發(fā)送&amp;接收(1.5Mbps波特率)機(jī)制

    一個嚴(yán)謹(jǐn)?shù)?b class='flag-5'>STM32串口DMA發(fā)送&接收(1.5Mbps波特率)機(jī)制
    的頭像 發(fā)表于 09-18 10:58 ?2365次閱讀
    一個嚴(yán)謹(jǐn)?shù)?b class='flag-5'>STM32</b><b class='flag-5'>串口</b>DMA<b class='flag-5'>發(fā)送</b>&amp;<b class='flag-5'>接收</b>(1.5Mbps波特率)機(jī)制

    STM32串口中斷接收不定長報文介紹

    本項目中,需要使用STM32的USART6串口與FPGA板(下位機(jī))通信,需要發(fā)送接收數(shù)據(jù),有報文應(yīng)答機(jī)制。
    的頭像 發(fā)表于 10-26 11:01 ?1165次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b>中斷<b class='flag-5'>接收</b>不定長報文介紹