DR寄存器中寫(xiě)入數(shù)據(jù)來(lái)實(shí)" />

精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

STM32請(qǐng)問(wèn)串口要發(fā)送數(shù)據(jù)“1”該怎么賦值給USART->DR寄存器?

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

STM32請(qǐng)問(wèn)串口要發(fā)送數(shù)據(jù)“1”該怎么賦值給USART->DR寄存器

首先,我們需要了解一下STM32的串口通信模塊。

STM32的串口通信模塊有三個(gè),分別是USART(通用同步異步收發(fā)器)、USART1、USART2。USART是通用串行同步/異步收發(fā)器,除TX和RX引腳外,還包含了同步引腳SCLK和從機(jī)選擇引腳NSS,可以用于SPI通信。

今天,我們主要介紹的是USART。USART支持全雙工收發(fā),可以實(shí)現(xiàn)異步通信和同步通信。

在STM32的串口通信中,發(fā)送數(shù)據(jù)可以通過(guò)往USART->DR寄存器中寫(xiě)入數(shù)據(jù)來(lái)實(shí)現(xiàn)。接下來(lái)我們來(lái)詳細(xì)介紹一下USART->DR寄存器。

USART->DR是USART數(shù)據(jù)寄存器,它是一個(gè)16位的寄存器,用于發(fā)送和接收數(shù)據(jù)。在發(fā)送數(shù)據(jù)時(shí),將要發(fā)送的數(shù)據(jù)寫(xiě)入U(xiǎn)SART->DR寄存器即可。在接收數(shù)據(jù)時(shí),USART->DR寄存器是只讀的,需要通過(guò)讀取USART的狀態(tài)寄存器SR來(lái)獲取接收到的數(shù)據(jù)。

接下來(lái),本文將詳細(xì)介紹如何通過(guò)USART->DR寄存器發(fā)送數(shù)據(jù)“1”。

1. 首先,要開(kāi)啟USART的發(fā)送功能,可以通過(guò)設(shè)置USART的控制寄存器USART_CR1實(shí)現(xiàn)。在控制寄存器中,有一個(gè)叫做USART_CR1.TE的位值表示要不要啟用發(fā)送功能,使能該位可以使USART啟動(dòng)發(fā)送數(shù)據(jù)的功能。

2. 設(shè)置波特率。波特率是串口通信的重要參數(shù),用于定義串口數(shù)據(jù)傳輸速率。波特率設(shè)置可以通過(guò)設(shè)置USART的控制寄存器USART_CR1中的USART_CR1.BRR位進(jìn)行,該位表示波特率的預(yù)分頻值。

3. 準(zhǔn)備發(fā)送的數(shù)據(jù)。在本例中,需要發(fā)送字符“1”,字符在計(jì)算機(jī)中是以ASCII碼的形式來(lái)表示的。因此,我們需要將字符“1”的ASCII碼賦值給USART->DR寄存器。

4. 判斷數(shù)據(jù)是否發(fā)送成功。可以通過(guò)判斷USART_SR寄存器中的TXE(傳輸寄存器空標(biāo)志位)和TC(發(fā)送完成標(biāo)志位)位值來(lái)判斷發(fā)送是否成功。當(dāng)TXE為1時(shí),表示USART->DR寄存器已經(jīng)空了,可以繼續(xù)向其中寫(xiě)入數(shù)據(jù)。當(dāng)TC為1時(shí),表示USART已經(jīng)發(fā)送完畢最后一個(gè)數(shù)據(jù),可以進(jìn)行下一步操作。

5. 清除標(biāo)志位。在發(fā)送完數(shù)據(jù)之后,需要清除USART_SR寄存器中的TC標(biāo)志位,以便下一次使用USART進(jìn)行數(shù)據(jù)發(fā)送。

以上就是發(fā)送數(shù)據(jù)“1”的詳細(xì)過(guò)程。在實(shí)際應(yīng)用中,為了使串口通信更加可靠,需要對(duì)發(fā)送的數(shù)據(jù)進(jìn)行校驗(yàn)和處理。比如,在發(fā)送的數(shù)據(jù)前面加上一個(gè)起始位,以及在數(shù)據(jù)末尾添加一個(gè)校驗(yàn)位等等。當(dāng)接收方收到數(shù)據(jù)后,需要對(duì)數(shù)據(jù)進(jìn)行校驗(yàn),確保數(shù)據(jù)的準(zhǔn)確性。

總之,STM32的串口通信功能強(qiáng)大,可以實(shí)現(xiàn)多種通信方式。在數(shù)據(jù)的發(fā)送和接收過(guò)程中,需要注意一些細(xì)節(jié)問(wèn)題,以保證數(shù)據(jù)的正確傳輸。

聲明:本文內(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)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5325

    瀏覽量

    120052
  • STM32
    +關(guān)注

    關(guān)注

    2266

    文章

    10876

    瀏覽量

    354927
  • 異步收發(fā)器
    +關(guān)注

    關(guān)注

    0

    文章

    36

    瀏覽量

    10838
  • USART串口
    +關(guān)注

    關(guān)注

    0

    文章

    32

    瀏覽量

    6807
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    寄存器分為基本寄存器和什么兩種

    ,它們用于存儲(chǔ)指令、數(shù)據(jù)和地址等信息。基本寄存器的容量通常較小,但訪(fǎng)問(wèn)速度非常快,因?yàn)樗鼈兣cCPU的執(zhí)行單元緊密相連。 基本寄存器的分類(lèi) 基本寄存器可以分為以下幾類(lèi): (
    的頭像 發(fā)表于 07-12 10:31 ?1146次閱讀

    做lora通訊用到usart,配置時(shí)遇到的usart奇偶校驗(yàn)問(wèn)題求解

    今天做lora通訊,用到usart,配置時(shí)發(fā)現(xiàn)usart奇偶校驗(yàn)困惑。假如CR1-&;gt;M、CR1-&;
    發(fā)表于 05-20 08:30

    使用STM8中的UART1,debug下發(fā)現(xiàn)UART1-&;gt;DR寄存器里面沒(méi)有數(shù)據(jù)是哪里的問(wèn)題?

    大家好,我想問(wèn)一下,STM8中的UART1,在使用過(guò)程中遇到這樣的問(wèn)題,配置好了,再循環(huán)里不斷發(fā)送字符,debug下發(fā)現(xiàn)UART1-&;gt;
    發(fā)表于 05-13 07:56

    調(diào)用ad7193芯片單次采樣函數(shù)前后,讀取其配置寄存器值不正確是什么原因?

    寄存器對(duì)應(yīng)增益放大的值不對(duì)。 執(zhí)行完單次采樣后,讀配置寄存器值,增益位是正確的。 在單次采樣函數(shù)調(diào)用前,讀配置寄存器值,數(shù)就不正確了。 while(1) { if(flag_
    發(fā)表于 05-10 06:17

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

    { Clear=USART2-&;gt;SR;//讀SR寄存器 Clear=USART2-&;gt;
    發(fā)表于 05-09 06:40

    stm8l151的usartDR寄存器無(wú)法寫(xiě)入是怎么回事?

    在線(xiàn)調(diào)試stm8l151處理是,發(fā)現(xiàn)usartdr寄存器無(wú)法寫(xiě)入,手動(dòng)寫(xiě)寄存器也寫(xiě)不進(jìn)去,會(huì)提示write operation to
    發(fā)表于 05-07 06:28

    STM32F103 UART2通過(guò)DMA方式發(fā)送和接收,發(fā)不出去數(shù)據(jù)是怎么回事?

    = (uint32_t)( USART2-&;gt;DR);// 設(shè)置串口發(fā)送數(shù)據(jù)
    發(fā)表于 04-30 06:17

    stm32F407 USART發(fā)送數(shù)據(jù),TC不能置位是怎么回事?

    )//原因:SR寄存器值為0x80,TXE置位,但此時(shí)TC沒(méi)有置位,移位寄存器數(shù)據(jù)沒(méi)有發(fā)送完成 { bitstatus = SET; } else { bitstatus = RE
    發(fā)表于 04-25 06:15

    HAL庫(kù)STM32串口2發(fā)送數(shù)組串口1異常的原因?

    ,u1buf,21,0xFFFF);//接收到數(shù)據(jù)馬上用串口1發(fā)送 HAL_UART_Receive_DMA( huart
    發(fā)表于 04-25 06:01

    STM32F4初始化USART中調(diào)用HAL_USART_Receive_IT開(kāi)啟接收中斷,HAL庫(kù)中為什么專(zhuān)門(mén)發(fā)0XFF?

    0xFF。 然后在HAL_USART_RxCpltCallback()中會(huì)接收到0x7F(不知從何而來(lái)),調(diào)用HAL_USART_Transmit()發(fā)送,函數(shù)返回HAL_OK,但是串口
    發(fā)表于 04-18 07:43

    串口3使用USART_SendData(USART1,mydata2)發(fā)送串口1一個(gè)命令,發(fā)送數(shù)據(jù)會(huì)引起接收中斷嗎?

    串口3使用USART_SendData(USART1,mydata2)發(fā)送串口1一個(gè)命令,傳
    發(fā)表于 04-07 07:01

    STM32F103ZET6 HAL庫(kù)使用串口1DMA空閑中斷接收數(shù)據(jù)時(shí)CNDTR寄存器問(wèn)題如何解決?

    .hdmarx))也就是串口1的CNDTR寄存器會(huì)首先減16,然后恢復(fù)到給定長(zhǎng)度,再次進(jìn)入中斷減去剩余長(zhǎng)度(又或當(dāng)長(zhǎng)度超過(guò)16字節(jié)后空閑中斷再次進(jìn)入)例如限定接收數(shù)據(jù)長(zhǎng)度為0xFFF,
    發(fā)表于 03-12 08:35

    STM32F405 DMA+空閑中斷接收,DMA_GetCurrDataCounter(DMA1_Stream1)與實(shí)際發(fā)送數(shù)據(jù)不符怎么解決?

    USART,每次可以進(jìn)中斷,但是DMA不接收數(shù)據(jù),接收寄存器一直為0,DR寄存器里顯示是我發(fā)的一幀數(shù)據(jù)
    發(fā)表于 03-07 08:28

    如何在sdk的軟件開(kāi)發(fā)中寄存器賦值

    請(qǐng)問(wèn),在hbird-e-sdk軟件開(kāi)發(fā)平臺(tái)中,怎么在c文件中寄存器賦值,用指針會(huì)賦值失敗
    發(fā)表于 01-10 07:51

    MCU外設(shè)寄存器謹(jǐn)慎賦值

    今天大家介紹的是改動(dòng)i.MXRT1xxx里IOMUXC_GPR寄存器保留位可能會(huì)造成系統(tǒng)異常。
    的頭像 發(fā)表于 12-12 09:14 ?709次閱讀
    MCU外設(shè)<b class='flag-5'>寄存器</b>謹(jǐn)慎<b class='flag-5'>賦值</b>法