色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取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

    文章

    1232

    瀏覽量

    84059
  • STM32
    +關注

    關注

    2293

    文章

    11032

    瀏覽量

    364783
  • 數據寄存器
    +關注

    關注

    0

    文章

    33

    瀏覽量

    8027
  • USART
    +關注

    關注

    1

    文章

    201

    瀏覽量

    31941
收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    STM32f103,直接操作寄存器,實現IIC的發送

    命令字節 I2C_WaitEvent(I2C_SR1_TXE);// 等待DR寄存器空 I2C2->DR = cmd;// 寫入命令字節 // 4. 連續發送數據數組 for (uint16_t i = 0
    發表于 06-25 10:18

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

    求助大佬們看一下我的程序為什么實現不了RS485通信

    2,USART_FLAG_TC); USART_ITConfig(USART2,USART_IT_RXNE,ENABLE); USART
    發表于 07-30 14:42
    主站蜘蛛池模板: 男人桶爽女人 | 男人把女人桶到高潮嗷嗷叫 | 久久精品国产欧美 | 超碰人热人人热人人看 | 中文字幕一区中文亚洲 | 久久久精品免费免费直播 | 护士喂我吃乳液我脱她内裤 | 99久久国产露脸精品国产麻豆 | 人人爽久久久噜噜噜丁香AV | 国产AV精品无码免费看 | 含羞草完整视频在线播放免费 | 日本乱hd高清videos | 国产精品久久vr专区 | 69国产精品人妻无码免费 | 被黑人群jian又粗又大H | 久久激情影院 | 无码11久岁箩筣 | 白丝制服被啪到喷水很黄很暴力 | 久久内在线视频精品mp4 | 一级毛片西西人体44rt高清 | 美女被免费喷白浆视频 | 国产亚洲精品久久久999密臂 | 黄 色 网 站 免 费 涩涩屋 | 亚洲中文热码在线视频 | 末成年美女黄网站色大片连接 | 秋霞电影在线观看午夜伦 | 三级黄色高清视频 | 国产精品私人玩物在线观看 | 久久re视频这里精品免费1 | 男人和女人一级黄色大片 | 亚洲国产AV精品一区二区蜜芽 | 亲胸揉胸膜下刺激视频在线观看 | 狠很橹快播 | 亚洲中字幕永久在线观看 | 黑人巨大两根一起挤进欧美 | 日本zljzljzlj精品 | 99re久久热在线视频 | 总裁呻吟双腿大开男男H | 亚洲精品久久久一区 | 久久re热在线视频精6 | 人人啪日日观看在线 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品