在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32的USART發送數據時如何使用TXE和TC標志呢?

工程師鄧生 ? 來源:未知 ? 作者:劉芹 ? 2023-10-26 11:31 ? 次閱讀

STM32的USART發送數據時如何使用TXE和TC標志呢?

USART 是 STM32 中非常重要的外設之一,用于串行通信,其中包括串口通信(RS232RS485)、SPI 和 I2C 等多種串行通信協議。USART 在 STM32 中有多個實例,包括 USART1、USART2 等,其特性和功能也不完全相同。

在發送數據時,USART 需要使用 TXE 和 TC 標志位。TXE 表示數據寄存器空,表示 USART 數據發送寄存器中的數據已被全部發送出去,可以直接寫入新的數據。TC 標志表示傳輸完成,表示 USART 發送完全部數據,且寄存器都為空。

下面我們來看一下 STM32 的 USART 發送數據時如何使用 TXE 和 TC 標志位。

1.USART 數據寄存器有兩種模式:8 位模式和 9 位模式。如果使用 8 位模式發送數據,則每次發送數據將用一個 8 位的數據寄存器。

2.如果使用 9 位模式發送數據,每次發送的數據將使用兩個寄存器:數據寄存器和控制寄存器。數據寄存器用于存儲 8 位的數據,而控制寄存器的最高位(第9 位)用于存儲數據的第 9 位。

3.在發送數據之前需要配置 USART 的一些參數,例如波特率、數據位數、停止位等。在配置完成后,可以使用 USART_SendData 函數向數據寄存器寫入數據。函數原型如下:

void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)

其中,USARTx 為 USART 模塊的實例,Data 為要發送的數據。由于 STM32 采用的是 Little-Endian 模式,因此在 9 位模式下,Data 的后 8 位會被寫入到數據寄存器中,而前一位則會被寫入到控制寄存器的最高位中。

4.當數據寄存器中的數據已被全部發送出去時,TXE 標志位會被置為 1,此時可以直接寫入新的數據。因此,可以使用 while 循環來判斷 TXE 標志位是否被置為 1,一旦被置為 1,就可以調用 USART_SendData 函數發送下一組數據。代碼如下:

while (USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET);

USART_SendData(USARTx, Data);

其中,USARTx 為 USART 模塊的實例,Data 為要發送的數據。

5.在發送完全部數據后,TC 標志位會被置為 1,此時表示數據全部發送完成。可以使用 while 循環來等待 TC 標志位被置位為 1,以便確認數據發送是否成功。代碼如下:

while (USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET);

6.串口發送數據時還需要注意的是,如果發送的數據過于頻繁,會導致 USART TX 緩沖區溢出。因此,在每次發送之前需要判斷 USART 的 TX 緩沖區是否為空,只有當 TX 緩沖區為空時才能進行下一次發送。可以使用 USART_GetFlagStatus 函數來判斷 TXE 標志位是否被置位為 1。

以上就是 STM32 的 USART 發送數據時如何使用 TXE 和 TC 標志位的詳細介紹。在實際開發中,需要根據具體的硬件和應用環境進行針對性設置和調整,才能保證 USART 的正常工作和數據傳輸的穩定性。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • RS485
    +關注

    關注

    39

    文章

    1224

    瀏覽量

    83646
  • STM32
    +關注

    關注

    2290

    文章

    11017

    瀏覽量

    362433
  • 數據寄存器
    +關注

    關注

    0

    文章

    33

    瀏覽量

    7969
  • USART
    +關注

    關注

    1

    文章

    200

    瀏覽量

    31634
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    STM32學習USART之基礎篇(可下載)

    今天分享 USART 設計前的基礎知識我們先來了解一下有關通信的基本概念:通信:兩個設備之間進行數據交換時,稱這個過程為兩個設備間的通信并行通信:設備之間的數據是以一位一位的二進制數進行傳輸的,并行
    發表于 03-31 15:07 ?4次下載

    STM32F107的USART2為什么進不了中斷?

    剛開始學STM32,手里有一塊公司的板子,板子上的USB接到FT232R,再從FT232R接到MCU的PD5(USART2TX)和PD6(USART2RX)。 我嘗試了公司的代碼,應該是用標準庫寫
    發表于 03-14 16:57

    STM32F427串口接收和發送中斷同時使能,為什么會出現接收中斷丟數的情況?

    STM32F427芯片,針對UART7開啟串口接收緩存區非空中斷RXNE和串口傳輸完成中斷TC. 1.單測試收發都沒有任何問題。 2.將串口與PC機連接,PC端通過串口助手發送數據給測
    發表于 03-11 07:05

    STM32L451CEU6發送0x80會收到0x00的數據發送0x01會收到0x7F的數據,為什么?

    使用STM32L451CEU6型號的芯片,在用usart(PA9、PA10)進行串口通信時,發送0x55在PC端可以收到正確的數據,但是發送
    發表于 03-07 08:44

    STM32CubeMX生成STM32mp135D的USART1,2,3,6代碼初始化是空的,為什么?

    STM32CubeMX生成STM32mp135D的USART1,2,3,6代碼初始化是空的,參考其他代碼做了初始化操作,可以通過HAL_USART_Transmit接口
    發表于 03-07 07:48

    串口數據錯亂?從標志位設置入手

    導讀在串口通信開發中,數據錯亂是常見問題。本文將快速介紹串口標志位的作用及配置方法,幫助解決數據傳輸錯誤。有用戶反饋“串口應用層數據錯亂、與發送
    的頭像 發表于 02-11 11:35 ?723次閱讀
    串口<b class='flag-5'>數據</b>錯亂?從<b class='flag-5'>標志</b>位設置入手

    AT32F407在USART2 DMA發送數據時,接包接到了要發送數據,程序還是處于等待傳輸完成的標識判斷中,為什么?

    型號AT32F407,在USART2DMA發送數據時,接包已經接到了要發送數據,但是程序還是處于等待傳輸完成的標識判斷中,卡死了。請教一下
    發表于 12-19 06:48

    記錄我的stm32開發學習過程

    STM32F103程序開發——串口UART篇(HAL庫) 本次實驗目標內容: 從零編寫UART庫函數,分別為UART.c和UART.h文件; 實現stm32單片機串口數據發送功能
    發表于 11-19 14:37

    STM32CUBEMX(8)--USART通過定時器中斷方式接收不定長數據

    =0;//接受到數據標志 /* USER CODE END PV */ 定義printf的重定向函數fputc。 /* USER CODE BEGIN 0 */ void printf_usart
    發表于 09-06 16:48

    STM32CUBEMX(6)--移植雅特力AT32F403AVGT7,雙串口通過DMA方式接收不定長數據

    ReceiveBuff_usart2=0;//置0 Rx_len_usart2=0;//接收數據長度清零 recv_end_flag_usart2=0;//接收
    發表于 09-06 16:37

    STM32CUBEMX(2)--USART通過DMA方式接收不定長數據

    ) { if(recv_end_flag ==1)//接收完成標志 { printf(\"數據長度=%d\\\\r\\\\n\",Rx_len);//打印接收到的數據長度 printf
    發表于 09-04 11:48

    rs485通信沒接收到數據發送了00

    ] = USART1->RDR & 0x1ff;//讀取一次數據清除標志 USART_flag = 0xff; DMA1_Channel3->CCR &
    發表于 08-24 16:42

    STM32G030F6用串口中斷函數接收數據發送數據就死機怎么解決?

    讀取串口數據,用的是HAL庫函數HAL_UART_Receive_IT去實現,現在發現只要向串口這邊一發數據就出現死機,串口調用HAL_UART_Transmit往往另外的設備發送數據
    發表于 07-11 06:44

    試圖從CAN卡向TC375發送報文時,TC375始終收不到,為什么?

    我試圖在TC375上進行CAN收發測試,測試目的是完成TC375和CAN卡的通訊,現在我已經成功地將CAN報文從TC375發送到了CAN卡,但是當我試圖從CAN卡向
    發表于 07-04 06:04

    STM32F030C8T6串口初始化,卡在中斷里面是怎么回事?

    ,ENABLE); } if(RESET != USART_GetITStatus(USART2, USART_IT_TXE))//發送完成 {
    發表于 07-03 06:58
    主站蜘蛛池模板: 国产情侣真实露脸在线最新 | 日日摸人人看97人人澡 | 色播影院性播免费看 | 欧美精品二区 | 人操人操| 亚洲精品资源在线 | 免费高清一级欧美片在线观看 | 欧美猛交xxxx乱大交 | 在线99热 | 亚洲二区在线 | 最新天堂网 | 看屁屁www视频免费观看 | 国产黄视频在线观看 | avbobo在线 | 看黄网站免费 | 免费h视频| 天天干免费视频 | 2021日本三级理论影院 | 午夜性刺激免费视频观看不卡专区 | 国产黄大片在线观看 | 国产成人一级片 | 依人成人 | 狠狠色噜噜狠狠狠狠97老肥女 | 一级精品视频 | 国产一级特黄高清在线大片 | 我要色综合网 | 午夜小福利 | 五月婷婷激情 | 黄网站在线观看视频 | 人人爱天天做夜夜爽毛片 | 寡妇影院首页亚洲图片 | 国内精品视频免费观看 | 激情五月综合网 | 丁香婷婷视频 | 国产三级 在线播放 | 成人看的一级毛片 | 欧美色性视频 | 黄在线看 | 亚洲国产日韩女人aaaaaa毛片在线 | 国产女乱淫真高清免费视频 | 国产美女亚洲精品久久久综合 |