女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

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

    文章

    1226

    瀏覽量

    83790
  • STM32
    +關注

    關注

    2291

    文章

    11019

    瀏覽量

    363051
  • 數據寄存器
    +關注

    關注

    0

    文章

    33

    瀏覽量

    7984
  • USART
    +關注

    關注

    1

    文章

    201

    瀏覽量

    31726
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    stm32N657配置USART2,可以發送,但是為什么無法進入接收中斷

    https://gitee.com/liu-qingchang/code/tree/master/stm32n6 main函數和usart代碼 使用stm32N657這塊評估板,使用cubeMX配置
    發表于 06-18 07:13

    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 ?759次閱讀
    串口<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

    試圖從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
    主站蜘蛛池模板: 和林格尔县| 金阳县| 阿拉善左旗| 光山县| 韶关市| 澎湖县| 义乌市| 汶上县| 新竹市| 永福县| 芒康县| 车致| 阳西县| 山阴县| 贡觉县| 济源市| 普安县| 水城县| 芒康县| 东至县| 鲜城| 岳阳市| 开原市| 双城市| 宁海县| 武威市| 信丰县| 丽江市| 黄石市| 清水河县| 喀什市| 茶陵县| 陆丰市| 伊春市| 阿拉善左旗| 肥乡县| 江孜县| 定结县| 横山县| 济源市| 吉木乃县|