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

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

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

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

STM32的USART發(fā)送數(shù)據(jù)時(shí)如何使用TXE和TC標(biāo)志呢?

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

STM32的USART發(fā)送數(shù)據(jù)時(shí)如何使用TXE和TC標(biāo)志呢?

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

在發(fā)送數(shù)據(jù)時(shí),USART 需要使用 TXE 和 TC 標(biāo)志位。TXE 表示數(shù)據(jù)寄存器空,表示 USART 數(shù)據(jù)發(fā)送寄存器中的數(shù)據(jù)已被全部發(fā)送出去,可以直接寫(xiě)入新的數(shù)據(jù)。TC 標(biāo)志表示傳輸完成,表示 USART 發(fā)送完全部數(shù)據(jù),且寄存器都為空。

下面我們來(lái)看一下 STM32 的 USART 發(fā)送數(shù)據(jù)時(shí)如何使用 TXE 和 TC 標(biāo)志位。

1.USART 數(shù)據(jù)寄存器有兩種模式:8 位模式和 9 位模式。如果使用 8 位模式發(fā)送數(shù)據(jù),則每次發(fā)送數(shù)據(jù)將用一個(gè) 8 位的數(shù)據(jù)寄存器。

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

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

void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)

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

4.當(dāng)數(shù)據(jù)寄存器中的數(shù)據(jù)已被全部發(fā)送出去時(shí),TXE 標(biāo)志位會(huì)被置為 1,此時(shí)可以直接寫(xiě)入新的數(shù)據(jù)。因此,可以使用 while 循環(huán)來(lái)判斷 TXE 標(biāo)志位是否被置為 1,一旦被置為 1,就可以調(diào)用 USART_SendData 函數(shù)發(fā)送下一組數(shù)據(jù)。代碼如下:

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

USART_SendData(USARTx, Data);

其中,USARTx 為 USART 模塊的實(shí)例,Data 為要發(fā)送的數(shù)據(jù)。

5.在發(fā)送完全部數(shù)據(jù)后,TC 標(biāo)志位會(huì)被置為 1,此時(shí)表示數(shù)據(jù)全部發(fā)送完成??梢允褂?while 循環(huán)來(lái)等待 TC 標(biāo)志位被置位為 1,以便確認(rèn)數(shù)據(jù)發(fā)送是否成功。代碼如下:

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

6.串口發(fā)送數(shù)據(jù)時(shí)還需要注意的是,如果發(fā)送的數(shù)據(jù)過(guò)于頻繁,會(huì)導(dǎo)致 USART TX 緩沖區(qū)溢出。因此,在每次發(fā)送之前需要判斷 USART 的 TX 緩沖區(qū)是否為空,只有當(dāng) TX 緩沖區(qū)為空時(shí)才能進(jìn)行下一次發(fā)送??梢允褂?USART_GetFlagStatus 函數(shù)來(lái)判斷 TXE 標(biāo)志位是否被置位為 1。

以上就是 STM32 的 USART 發(fā)送數(shù)據(jù)時(shí)如何使用 TXE 和 TC 標(biāo)志位的詳細(xì)介紹。在實(shí)際開(kāi)發(fā)中,需要根據(jù)具體的硬件和應(yīng)用環(huán)境進(jìn)行針對(duì)性設(shè)置和調(diào)整,才能保證 USART 的正常工作和數(shù)據(jù)傳輸?shù)姆€(wěn)定性。

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

    關(guān)注

    39

    文章

    1187

    瀏覽量

    83432
  • STM32
    +關(guān)注

    關(guān)注

    2283

    文章

    10986

    瀏覽量

    361381
  • 數(shù)據(jù)寄存器

    關(guān)注

    0

    文章

    33

    瀏覽量

    7923
  • USART
    +關(guān)注

    關(guān)注

    1

    文章

    198

    瀏覽量

    31515
收藏 0人收藏

    評(píng)論

    相關(guān)推薦

    STM32F427串口接收和發(fā)送中斷同時(shí)使能,為什么會(huì)出現(xiàn)接收中斷丟數(shù)的情況?

    STM32F427芯片,針對(duì)UART7開(kāi)啟串口接收緩存區(qū)非空中斷RXNE和串口傳輸完成中斷TC. 1.單測(cè)試收發(fā)都沒(méi)有任何問(wèn)題。 2.將串口與PC機(jī)連接,PC端通過(guò)串口助手發(fā)送數(shù)據(jù)給測(cè)
    發(fā)表于 03-11 07:05

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

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

    STM32CUBEMX(2)--USART通過(guò)DMA方式接收不定長(zhǎng)數(shù)據(jù)

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

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

    ,ENABLE); } if(RESET != USART_GetITStatus(USART2, USART_IT_TXE))//發(fā)送完成 {
    發(fā)表于 07-03 06:58

    stm32f103c8t6串口發(fā)送大量hex數(shù)據(jù)失效的原因?

    發(fā)送數(shù)據(jù)量為640個(gè)十六進(jìn)制數(shù)據(jù)是正常的,上位機(jī)有收到書(shū)籍。但是我想發(fā)送3600個(gè)數(shù)據(jù)就一直滅有反應(yīng),不知道為啥什么,求助。我使用的是A9
    發(fā)表于 05-29 07:06

    TC399 UART能夠接收數(shù)據(jù),但無(wú)法發(fā)送任何數(shù)據(jù),為什么?

    傳輸數(shù)據(jù)。 我能夠接收數(shù)據(jù),但無(wú)法發(fā)送任何數(shù)據(jù)。 我用示波器監(jiān)測(cè)了 TX 引腳,它始終保持在 VDD 電平。 目前,我使用以下步驟來(lái)初始化 ASCLIN 模塊和
    發(fā)表于 05-21 06:48

    開(kāi)發(fā)環(huán)境coocox,stm32f429串口輸出總是亂碼的原因?

    一個(gè)小小的串口居然讓我搗鼓了兩天還沒(méi)出來(lái),時(shí)鐘正確,usart寄存器值也是對(duì)的。然后試了試源碼居然一樣亂碼。不知道是怎么了。板子是官方的論壇送的stm32f429zit6。下面貼上代碼和源碼
    發(fā)表于 05-17 07:38

    STM32F103RCT6串口重定向數(shù)據(jù)發(fā)送和接收,如何才能不接收MCU發(fā)出去的數(shù)據(jù)?

    不知道各位有沒(méi)有出現(xiàn)過(guò)這樣的情況,我使用STM32F103RCT6芯片編寫(xiě)串口程序,重定向printf函數(shù)到串口1,數(shù)據(jù)可以正常地發(fā)送和接收,但是有個(gè)問(wèn)題 我仿真的時(shí)候發(fā)現(xiàn),我每次用printf
    發(fā)表于 05-16 08:25

    STM8L串口通信,只能接收,無(wú)法發(fā)送的原因?

    寫(xiě)了一個(gè)串口通信實(shí)驗(yàn),接的藍(lán)牙,發(fā)送指令后,正確的話應(yīng)該能收到OK,但是現(xiàn)在就是沒(méi)有返回。 void USART_Config(void) { GPIO_Init(GPIOC,GPIO_Pin_6
    發(fā)表于 05-13 06:16

    stm8單個(gè)定時(shí)器中斷沒(méi)有問(wèn)題,加入U(xiǎn)ART/SPI中斷就異常的原因?

    (UART2_IT_RXNE , ENABLE); //UART2_ITConfig(UART2_IT_TC , ENABLE); //SPI_ITConfig(SPI_IT_TXE, ENABLE);不開(kāi)中斷
    發(fā)表于 05-11 06:59

    stm8l的USART+DMA如何使用?

    _GetFlagStatus (USART1,USART_FLAG_TXE));//等待發(fā)送完畢 USART_SendData8(USART
    發(fā)表于 05-10 07:15

    stm32的modbus.c文件,如何觸發(fā)串口發(fā)送中斷?

    1, USART_IT_TC, DISABLE);這個(gè)函數(shù),使能發(fā)送中斷后,會(huì)發(fā)送個(gè)空白幀?從而引發(fā)第一次串口發(fā)送中斷. 所以說(shuō),這個(gè)函數(shù)應(yīng)該作為個(gè)串口
    發(fā)表于 05-10 06:50

    求助,關(guān)于stm32的HAL庫(kù)對(duì)UART采用DMA發(fā)送的地址位標(biāo)志問(wèn)題求解

    stm32 UART多機(jī)通訊可以采用地址喚醒模式,在發(fā)送地址字節(jié)時(shí)設(shè)置USART_DR第9位置1即可,原來(lái)的標(biāo)準(zhǔn)庫(kù)對(duì)這種模式的驅(qū)動(dòng)沒(méi)問(wèn)題,現(xiàn)在最新的HAL驅(qū)動(dòng)庫(kù)對(duì)UART采用DMA發(fā)送
    發(fā)表于 05-09 07:01

    STM32串口DMA通訊接收不到數(shù)據(jù)的原因?

    u8 send_complete=0; //發(fā)送完成標(biāo)志1為完成 //USART2參數(shù)配置函數(shù) void USART2_Configuration(void
    發(fā)表于 05-09 06:40

    STM8L051F3串口發(fā)送接收數(shù)據(jù)丟失怎么解決?

    _DeInit(USART1); //復(fù)位UART1 /* * 將UART1配置為: * 波特率 = 38400 * 數(shù)據(jù)位 = 8 * 1位停止位 * 無(wú)校驗(yàn)位 * 使能接收和發(fā)送 */
    發(fā)表于 05-08 06:21
    主站蜘蛛池模板: 国产精选视频在线观看 | 乱叫抽搐流白浆免费视频 | 亚洲综合小说久久另类区 | 成人午夜精品无码区久久漫画日本 | 亚洲免费在线播放 | 2020最新无码国产在线视频 | 亚洲 天堂 欧美 日韩 国产 | 国产精品无码AV天天爽色欲 | 韩国伦理片2018在线播放免费观看 | 国产女人喷潮视频免费 | 99热这里只就有精品22 | 国产精品 中文字幕 亚洲 欧美 | 久久亚洲人成网站 | 极品内射少妇精品无码视频 | 99精品免费久久久久久久久蜜桃 | qovd伦理| 亚洲欧美免费无码专区 | 亚洲精品综合在线影院 | 87影院午夜福利 | 中国xxxxx| 婷婷久久综合九色综合伊人色 | 语文老师扒开胸罩喂我奶 | 亚洲精品久久99蜜芽尤物TV | 嫩草影院精品视频在线观看 | 国产精品久久久久婷婷五月色婷婷 | 国产特级毛片AAAAAAA高清 | 男人J桶女人P视频无遮挡网站 | 99re6热这里在线精品视频 | 一个人免费观看完整视频日本 | 久久精品日本免费线 | 久久精品国产亚洲AV久五月天 | 玩50岁四川熟女大白屁股直播 | 免费在线观看黄色网址 | 激情内射亚洲一区二区三区 | 小泽玛丽av无码观看 | 国产AV视频二区在线观看 | 欧美四虎精品二区免费 | 玩弄人妻少妇500系列网址 | 极品美女穴 | 少妇被躁爽到高潮无码久久 | 99精品电影|

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品