娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

GD32開發實戰指南(基礎篇) 第10章 串口通信

發布者:溫暖夢想最新更新時間:2024-11-08 來源: elecfans關鍵字:GD32  開發實戰  串口通信 手機看文章 掃描二維碼
隨時隨地手機看文章

開發環境:

MDK:Keil 5.30

開發板:GD32F207I-EVAL

MCU:GD32F207IK


1 串口簡介

USART(Universal Synchronous Asynchronous Receiver and Transmitter,通用同步-異步接收發射器)提供了一種靈活的方法與使用工業標準NRZ異步串行數據格式的外部設備之間進行全雙工數據交換。USART利用分數波特率發生器提供寬范圍的波特率選擇。它支持同步單向通信和半雙工單線通信,也支持LIN(局部互連網),智能卡協議和IrDA(紅外數據組織)SIR ENDEC規范,以及調制解調器(CTS/RTS)操作。它還允許多處理器通信。使用多緩沖器配置的DMA方式,可以實現高速數據通信。

雖然USART既可以同步又可以異步,但是常見的最常用的就是使用功能的異步功能,如果作為異步通信就是UART(Universal Asynchronous Receiver and Transmitter),可以說,UART是USART的子集,但是同步通信相比異步通信多了一根時鐘同步信號線。

下面簡單介紹下同步和異步。

在同步通訊中,收發設備雙方會使用一根信號線表示時鐘信號,在時鐘信號的驅動下雙方進行協調,同步數據,見下圖。通訊中通常雙方會統一規定在時鐘信號的上升沿或下降沿對數據線進行采樣。

1683895220147axge4u4qtc

在異步通訊中不使用時鐘信號進行數據同步,它們直接在數據信號中穿插一些同步用的信號位,或者把主體數據進行打包,以數據幀的格式傳輸數據,見下圖,某些通訊中還需要雙方約定數據的傳輸速率,以便更好地同步。

1683895220804pmuvbhvx11

在同步通訊中,數據信號所傳輸的內容絕大部分就是有效數據,而異步通訊中會包含有幀的各種標識符,所以同步通訊的效率更高,但是同步通訊雙方的時鐘允許誤差較小,而異步通訊雙方的時鐘允許誤差較大。

從上面的介紹可以看出,USART以同步方式通信需要時鐘同步信號,但不需要額外的起始、停止位,可以實現更快的傳輸速度。但USART控制起來更復雜,因此本文主要講解以異步通信。

異步串行通信以字符為單位,即一個字符一個字符地傳送 。

16838952212104nl83id006

串口外設的架構圖看起來十分復雜,實際上對于軟件開發人員來說,我們只需要大概了解串口發送的過程即可。從下至上,我們看到串口外設主要由三個部分組成,分別是波特率控制、收發控制和數據存儲轉移。

  • 波特率控制

波特率,即每秒傳輸的二進制位數,用b/s(bps)表示,通過對時鐘的控制可以改變波特率。在配置波特率時,我們向波特比率寄存器 USART_BAUD寫入參數,修改了串口時鐘的分頻值USARTDIV。USART_BAUD寄存器包括兩部分,分別是INTDIV(USARTDIV 的整數部分)和FRADIV(USARTDIV 的小數)部分,最終,計算公式為 USARTDIV= INTDIV+(FRADIV/16)。

USARTDIV 是對串口外設的時鐘源進行分頻的,USART0/5的系統時鐘為PCLK2, USART1/2和UART3/4/6/7的系統時鐘為PCLK1,串口的時鐘源經過 USARTDIV 分頻后分別輸出作為發送器時鐘及接收器時鐘,控制發送和接收的時序。在使能USART之前,必須在時鐘控制單元使能系統時鐘。

1683895221580zntbwdjtxe

  • 收發控制

圍繞著發送器和接收器控制部分,有好多個寄存器 :STAT0、USART_CTL0、USART_CTL1、USART_CTL2和 STAT1,即USART 的三個控制寄存器(Control Register)及一個狀態寄存器(Status Register)。通過向寄存器寫入 各種控制參數來控制發送和接收,如奇偶校驗位、停止位等,還包括對USART 中斷的控制;串口的狀態在任何時候都可以從狀態寄存器中查詢得到。其中停止位的配置如下圖所示。

1683895221949vzwsmuzlua

  • 發送配置步驟:

1.在USART_CTL0寄存器中置位UEN位,使能USART;

2.通過USART_CTL0寄存器的WL設置字長;

3.在USART_CTL1寄存器中寫STB[1:0]位來設置停止位的長度;

4.如果選擇了多級緩存通信方式,應該在USART_CTL2寄存器中使能DMA (DENT位);

5.在USART_BAUD寄存器中設置波特率;

6.在USART_CTL0寄存器中設置TEN位;

7.等待TBE置位;

8.向USART_DATA寄存器寫數據;

9.若DMA未使能,每發送一個字節都需重復步驟7-8;

10.等待TC=1,發送完成。

1683895222355c03jht49yj

在禁用USART或進入低功耗狀態之前,必須等待TC置位。先讀USART_STAT0然后再寫USART_DATA可將TC位清0。在多級緩存通信方式(DENT=1)下,直接向TC寫0,也能清TC。

  • 接收配置步驟:

1.寫USART_CTL0寄存器的WL位去設置字長;

2.在USART_CTL1寄存器中寫STB[1:0]位來設置停止位的長度;

3.如果選擇了多級緩存通信方式,應該在USART_CTL2寄存器中使能DMA(DENR位);

4.在USART_BAUD寄存器中設置波特率;

5.在USART_CTL0寄存器中置位UEN位,使能USART;

6.在USART_CTL0中設置REN位。

接收器在使能后若檢測到一個有效的起始脈沖便開始接收碼流。在接收一個數據幀的過程中會檢測噪聲錯誤,奇偶校驗錯誤,幀錯誤和過載錯誤。

當接收到一個數據幀, USART_STAT0寄存器中的RBNE置位,如果設置了USART_CTL0寄存器中相應的中斷使能位RBNEIE,將會產生中斷。在USART_STAT0寄存器中可以觀察接收狀態標志。

軟件可以通過讀USART_DATA寄存器或者DMA方式獲取接收到的數據。不管是直接讀寄存器還是通過DMA,只要是對USART_DATA寄存器的一個讀操作都可以清除RBNE位。

在接收過程中,需使能REN位,不然當前的數據幀將會丟失。

以上對串口通信進行了簡單介紹,為了方便各位讀者朋友更好的理解,在這里筆者將引入一個新的思想--系統分層思想。既然各位對著有意于嵌入式,那么必須得有對整個系統的架構要有一定的認知。對GD32裸機開發,我們可以將分為三層:物理層、協議層和應用層。前文講了這么多也是對串口協議進行分析,常用的物理層的串口通信標準有232和485。

【注】UART和USART的區別

USART(universal synchronous asynchronous receiver and transmitte): 通用同步異步收發器,USART是一個串行通信設備,可以靈活地與外部設備進行全雙工數據交換。

UART(universal asynchronous receiver and transmitter): 通用異步收發器,異步串行通信口(UART)就是我們在嵌入式中常說的串口,它還是一種通用的數據通信議。從名字上可以看出,USART在UART基礎上增加了同步功能,即USART是UART的增強型。

當我們使用USART在異步通信的時候,它與UART沒有什么區別,但是用在同步通信的時候,區別就很明顯了:大家都知道同步通信需要時鐘來觸發數據傳輸,也就是說USART相對UART的區別之一就是能提供主動時鐘。如GD32的USART可以提供時鐘支持ISO7816的智能卡接口。

USART是指單片機的一個端口模塊,可以根據需要配置成同步模式(SPI,I2C),也可以將其配置為異步模式,后者就是UART。所以說UART姑且可以稱之為一個與SPI,I2C對等的“協議”,而USART則不是一個協議,而是更應該理解為一個實體。相比于同步通訊,UART不需要統一的時鐘線,接線更加方便。但是,為了正常的對信號進行解碼,使用UART通訊的雙方必須事先約定好波特率,即每個碼元的長度。

關于串口的深入理解,請參看筆者文章:

https://blog.bruceou.cn/2021/01/detailed-explanation-of-stm32-serial-communication/555/

2 串口通信的寄存器描述

串口常用的寄存器有狀態寄存器(USART_STATx)、數據寄存器(USART_DATA)、波特比率寄存器(USART_BAUD)、控制寄存器 (USART_CTLx)。

1683895222737bd67lzcxas

1683895223168dhpfo23z8c

1683895223522iwiaspele1

1683895223895iajpcvmzo3

3 串口硬件

串口的接口通過三個引腳與其他設備連接在一起。任何USART雙向通信至少需要兩個腳:接收數據輸入(RX)和發送數據輸出(TX)。

  • RX:接收數據串行輸入。通過采樣技術來區別數據和噪音,從而恢復數據。

  • TX :發送數據輸出。當發送器被禁止時,輸出引腳恢復到它的I/O端口配置。當發送器被激活,并且不發送數據時,TX引腳處于高電平。在單線和智能卡模式里,此I/O 口被同時用于數據的發送和接收。

1683895224390602dmuuzev

板子使用串口0,接口用的232,但對于軟件來說,都是一樣的。


4 串口發送(重定向printf)

4.1 串口發送實現

下面筆者就用標準庫來操作串口0。


1.串口配置


串口0時鐘使能

串口1是掛載在 APB2 下面的外設,所以使能函數為:


rcu_periph_clock_enable(RCU_USART0);

值得注意的是,不僅要打開串口的時鐘,還需要打開相應GPIO的時鐘,最終的代碼如下:


rcu_periph_clock_enable(RCU_GPIOA);

配置串口GPIO

這個比較簡單,前面的章節已經講過了,只需要注意的是,這里的GPIO不再是普通GPIO,要配置成復用功能,因此TX和RX分別配置成GPIO_MODE_AF_PP和GPIO_MODE_IN_FLOATING。


串口復位

當外設出現異常的時候可以通過復位設置,實現該外設的復位,然后重新配置這個外設達到讓其重新工作的目的。一般在系統剛開始配置外設的時候,都會先執行復位該外設的操作。復位的是在函數usart_deinit()中完成:


void usart_deinit(uint32_t usart_periph);

比如我們要復位串口0,方法為:


usart_deinit(USART0);

串口參數初始化

串口初始化是以下函數設置:


void usart_baudrate_set(uint32_t usart_periph, uint32_t baudval); //設置波特率

void usart_word_length_set(uint32_t usart_periph, uint32_t wlen); //設置傳輸字長

void usart_stop_bit_set(uint32_t usart_periph, uint32_t stblen); //設置停止位

void usart_parity_config(uint32_t usart_periph, uint32_t paritycfg); //設置校驗位

void usart_hardware_flow_rts_config(uint32_t usart_periph, uint32_t rtsconfig); //設置RTS流控

void usart_hardware_flow_cts_config(uint32_t usart_periph, uint32_t ctsconfig); //設置CTS流控

void usart_receive_config(uint32_t usart_periph, uint32_t rxconfig); //設置接收使能

void usart_transmit_config(uint32_t usart_periph, uint32_t txconfig); //設置發送使能

從上面的初始化格式可以看出初始化需要設置的參數為:波特率,字長,停止位,奇偶校驗位,硬件數據流控制,模式(收,發)。 我們可以根據需要設置這些參數。


串口使能

串口使能是通過函數usart_enable()來實現的,這個很容易理解,使用方法是:


usart_enable(USART0);

到此,串口初始化的基本配置就算完成了,完整初始化代碼如下:


/*

    brief      configure COM port

    param[in]  com_typedef_enum com_id, uint32_t baudval

    param[out] none

    retval     none

*/

void com_init(com_typedef_enum com_id, uint32_t baudval)

{

    /* enable GPIO clock */

    rcu_periph_clock_enable(COM_GPIO_CLK[com_id]);


    /* enable USART clock */

    rcu_periph_clock_enable(COM_CLK[com_id]);


    /* connect port to USARTx_Tx */

    gpio_init(COM_GPIO_PORT[com_id], GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, COM_TX_PIN[com_id]);


    /* connect port to USARTx_Rx */

    gpio_init(COM_GPIO_PORT[com_id], GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, COM_RX_PIN[com_id]);


    /* USART configure */

    usart_deinit(COM_USART[com_id]);

    usart_baudrate_set(COM_USART[com_id], baudval);

    usart_word_length_set(COM_USART[com_id], USART_WL_8BIT);

    usart_stop_bit_set(COM_USART[com_id], USART_STB_1BIT);

    usart_parity_config(COM_USART[com_id], USART_PM_NONE);

    usart_hardware_flow_rts_config(COM_USART[com_id], USART_RTS_DISABLE);

    usart_hardware_flow_cts_config(COM_USART[com_id], USART_CTS_DISABLE);

    usart_receive_config(COM_USART[com_id], USART_RECEIVE_ENABLE);

    usart_transmit_config(COM_USART[com_id], USART_TRANSMIT_ENABLE);

    usart_enable(COM_USART[com_id]);

}

2.數據發送與接收


GD32 的發送與接收是通過數據寄存器USART_DATA來實現的,這是一個雙寄存器。當向該寄存器寫數據的時候,串口就會自動發送,當收到數據的時候,也是存在該寄存器內。


GD32庫函數操作USART_DATA寄存器發送數據的函數是:


void usart_data_transmit(uint32_t usart_periph, uint16_t data);

通過該函數向串口寄存器 USART_DR 寫入一個數據。


GD32庫函數操作USART_DATA寄存器讀取串口接收到的數據的函數是:


uint16_t usart_data_receive(uint32_t usart_periph);

通過該函數可以讀取串口接受到的數據。


3.串口狀態


串口的狀態可以通過狀態寄存器USART_STAT0讀取。


狀態寄存器的其他位我們這里就不做過多講解,大家需要可以查看中文參考手冊。


在我們固件庫函數里面,讀取串口狀態的函數是:


FlagStatus usart_flag_get(uint32_t usart_periph, usart_flag_enum flag);

這個函數的第二個入口參數非常關鍵, 它是標示我們要查看串口的哪種狀態, 比如上面講解的TBE(讀數據寄存器非空)以及 TC(發送完成)。例如我們要判斷讀寄存器是否非空(TBE), 操作庫函數的方法是:


usart_flag_get (USART0, USART_FLAG_TBE);

我們要判斷發送是否完成(TC),操作庫函數的方法是:


usart_flag_get (USART0, USART_FLAG_TC);

這些標識號是通過枚舉類型定義的:


/* USART flags */

typedef enum {

    /* flags in STAT0 register */

    USART_FLAG_CTSF = USART_REGIDX_BIT(USART_STAT0_REG_OFFSET, 9U),      /*!< CTS change flag */

    USART_FLAG_LBDF = USART_REGIDX_BIT(USART_STAT0_REG_OFFSET, 8U),      /*!< LIN break detected flag */

    USART_FLAG_TBE = USART_REGIDX_BIT(USART_STAT0_REG_OFFSET, 7U),       /*!< transmit data buffer empty */

    USART_FLAG_TC = USART_REGIDX_BIT(USART_STAT0_REG_OFFSET, 6U),        /*!< transmission complete */

    USART_FLAG_RBNE = USART_REGIDX_BIT(USART_STAT0_REG_OFFSET, 5U),      /*!< read data buffer not empty */

    USART_FLAG_IDLEF = USART_REGIDX_BIT(USART_STAT0_REG_OFFSET, 4U),     /*!< IDLE frame detected flag */

    USART_FLAG_ORERR = USART_REGIDX_BIT(USART_STAT0_REG_OFFSET, 3U),     /*!< overrun error */

    USART_FLAG_NERR = USART_REGIDX_BIT(USART_STAT0_REG_OFFSET, 2U),      /*!< noise error flag */

    USART_FLAG_FERR = USART_REGIDX_BIT(USART_STAT0_REG_OFFSET, 1U),      /*!< frame error flag */

    USART_FLAG_PERR = USART_REGIDX_BIT(USART_STAT0_REG_OFFSET, 0U),      /*!< parity error flag */

    /* flags in STAT1 register */

    USART_FLAG_BSY = USART_REGIDX_BIT(USART_STAT1_REG_OFFSET, 16U),      /*!< busy flag */

    USART_FLAG_EB = USART_REGIDX_BIT(USART_STAT1_REG_OFFSET, 12U),       /*!< end of block flag */

    USART_FLAG_RT = USART_REGIDX_BIT(USART_STAT1_REG_OFFSET, 11U)        /*!< receiver timeout flag */

} usart_flag_enum;


另外,筆者在此給出輸出格式的說明,請讀者朋友參考。

格式說明
%d按照十進制整型數打印
%6d按照十進制整型數打印,至少6個字符寬
%f按照浮點數打印
%6f按照浮點數打印,至少6個字符寬
%.2f按照浮點數打印,小數點后有2位小數
%6.2f按照浮點數打印,至少6個字符寬,小數點后有2位小數
%x按照十六進制打印
%c打印字符
%s打印字符串


接下來就可以實現串口的發送了,這里對發送函數進行封裝。


/**

  * @brief  串口發送一個字節數據 

  * @param  ch:待發送字符

  * @retval None

  */

void usart_send_byte(uint8_t ch)

{

    /* 發送一個字節數據到USART */

    usart_data_transmit(USART0,ch);


    /* 等待發送完畢 */

    while (usart_flag_get(USART0, USART_FLAG_TBE) == RESET);

}


/**

  * @brief  串口發送指定長度的字符串

  * @param  str:待發送字符串緩沖器

  *         strlen:指定字符串長度

  * @retval None

  */

void usart_sendStr_length(uint8_t *str,uint32_t strlen)

{

    unsigned int k=0;

    do 

    {

        usart_send_byte(*(str + k));

        k++;

    } while(k < strlen);

}


/**

  * @brief  串口發送字符串,直到遇到字符串結束符

  * @param  str:待發送字符串緩沖器

  * @retval None

  */

void usart_send_string(uint8_t *str)

{

  unsigned int k=0;

    do 

[1] [2]
關鍵字:GD32  開發實戰  串口通信 引用地址:GD32開發實戰指南(基礎篇) 第10章 串口通信

上一篇:GD32開發實戰指南(基礎篇) 第9章 呼吸燈
下一篇:【技術分享】星空派GD32開發板LVGL移植經驗分享

推薦閱讀最新更新時間:2025-07-09 11:57

GD32 FATFS+FTL Nand解決方案
1. 方案簡介 Nand flash有非易失、存儲容量大、壽命長等優點;同時具有存在壞塊、擦除次數有限、易出現error bit的缺點;并且具有擦除以block(塊)為單位,寫入以page(頁)為單位,讀取以sector(512 byte)為單位的特點。 基于上述原因,對Nand flash的應用不僅要避免壞塊、均衡塊擦除次數、糾正error bit,而且需要按照其讀寫擦的特點進行應用。若沒有一套管理軟件針對nand的特性,則對其應用將非常困難。 FTL(Flash Transform Layer)是基于nand flash的管理算法軟件,可解決上述提出的所有問題,將Nand flash模擬成如。 ▲ FTL軟件架構圖 2
[單片機]
<font color='red'>GD32</font> FATFS+FTL Nand解決方案
如何對GD32 MCU進行加密?
GD32 MCU有哪些加密方法呢?大家在平時項目開發的過程中,最后都可能會面臨如何對出廠產品的MCU代碼進行加密,避免產品流向市場被別人讀取復制。 下面為大家介紹GD32 MCU所支持的幾種常用的加密方法: 首先GD32 MCU本身支持防硬開蓋破解的功能,GD32 MCU內部Flash直接硬開蓋破解讀取的數據無法在同型號的產品上運行,因為GD32 MCU內部Flash物理地址和邏輯地址是隨機加密的,因而可以有效防止硬破解讀取代碼的可能,這是GD32 MCU本身支持的,無需使用者進行配置; 可以設置讀保護,GD32 MCU支持讀保護設置,有些MCU支持低保護等級,設置讀保護后,通過ISP出廠BOOTLOADER或者SWD端口均無
[單片機]
如何對<font color='red'>GD32</font> MCU進行加密?
《嵌入式-STM32開發指南》第二部分 基礎篇 - 第6章串口通信(HAL庫)
6.1串口簡介 通用同步異步收發器(USART)提供了一種靈活的方法與使用工業標準NRZ異步串行數據格式的外部設備之間進行全雙工數據交換。USART利用分數波特率發生器提供寬范圍的波特率選擇。它支持同步單向通信和半雙工單線通信,也支持LIN(局部互連網),智能卡協議和IrDA(紅外數據組織)SIR ENDEC規范,以及調制解調器(CTS/RTS)操作。它還允許多處理器通信。使用多緩沖器配置的DMA方式,可以實現高速數據通信。圖一也就我們熟悉的串口通通信標準。 圖1 232通信標準 如圖2所示,串口通過三個引腳與其他設備連接在一起。任何USART雙向通信至少需要兩個腳:接收數據輸入(RX)和發送數據輸出(TX)。 圖2 US
[單片機]
RS232通信接口與USB轉串口通信的設計
對于單片機來說,通信則與傳感器、存儲芯片、外圍控制芯片等技術緊密結合,成為整個單片機系統的“神經中樞”。 1、初步認識 一位一位的發送出去的,要發送8次才能發送完一個字節。 STC89C52有兩個引腳是專門用來做 UART串行通信的,一個是 P3.0一個是 P3.1,它們還分別有另外的名字叫做 RXD和TXD,由它們組成的通信接口就叫做串行接口,簡稱串口。 波特率:發送二進制數據位的速率,習慣上用 baud 表示;即我們發送一位二進制數據的持續時間=1/baud。 通信過程:在UART 通信的時候,一個字節是 8 位,規定當沒有通信信號發生時,通信線路保持高電平,當要發送數據之前,先發一位 0 表示起始位,然后發送 8 位
[單片機]
RS232通信接口與USB轉<font color='red'>串口通信</font>的設計
stm32串口通信流程圖
1.寫在前面 首先,你要知道STM32啟動文件中啟動流程,你就需要掌握一點匯編基礎知識。 匯編語言屬于機器語言,或者說低級語言,C語言屬于高級語言,所以,匯編和C語言在語法上差異很大。 如果你學底層開發,匯編的一些基礎知識需要掌握。不需要精通,但需要看懂常見的匯編代碼。 2.說明 STM32的啟動文件與編譯器有關,不同編譯器,它的啟動文件不同。 雖然啟動文件(匯編)代碼各有不同,但它們原理類似,都屬于匯編程序。 我們拿基于MDK-ARM的啟動文件來舉例,說一下要點內容。 3.分配堆棧 在基于MDK的啟動文件開始,有一段匯編代碼是分配堆棧大小的。 這里重點知道堆棧數值大小就行。還有一段AREA(區域),表示分配一段堆棧數
[單片機]
stm32<font color='red'>串口通信</font>流程圖
STM32F407多路串口通信進行數據收發
一直被說是就不能把幾個串口放在一起,寫個標準例程直接用,非要每次用哪個串口才現場改程序,被迫把usart1,usart2,usart3進行了資源整合,掛在這以備不時之需。 功能簡述: 串口1,串口2,串口3串口內自收自發數據,串口之間通信互發數據,讀取串口的緩沖區進行收發都可以,資源沖突已經解決,可以直接用。 程序聲明: 根據標準例程對usart1,usart2,usart3進行了GPIO,時鐘,串口等配置,放在了一個工程中,為每個串口定義了自己的緩沖區(大小也是)用于存儲串口接收到的數據。 因為主要用的是usart1來進行調試,所以就為usart1中配置了標準庫函數,若需要用其他串口來打印輸出,可以將下方代碼
[單片機]
51單片機入門 - 串口通信實驗(模擬串口通信/多機通信實例)
RS232串口應用實例 設計要求: 通過串口發送接收數據(串口工作方式1) 實現思路: 定時器設置 串口設置 工作方式 波特率 開啟定時/計數器 串口執行 接收數據 發送數據 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 實現代碼: 1 #include reg51.h 2 main() 3 { 4 TMOD = 0x20; 5 SM0
[單片機]
51單片機入門 - <font color='red'>串口通信</font>實驗(模擬<font color='red'>串口通信</font>/多機通信實例)
【STM32】5分鐘了解STM32的串口通信
一、串口通信簡介 1.1 百度百科解釋 來源百度百科 串行接口是一種可以將接收來自CPU的并行數據字符轉換為連續的串行數據流發送出去,同時可將接收的串行數據流轉換為并行的數據字符供給CPU的器件。一般完成這種功能的電路,我們稱為串行接口電路。 串口通信(Serial Communications)的概念非常簡單,串口按位(bit)發送和接收字節的通信方式。 1.2 通信接口 1.3 串口通信分類 ▲ 全雙工、半雙工和單工 1.4 STM32串行通信的通信方式 插播一條反爬蟲信息,讀者可以忽略: 二、STM32的串口通信 ▲ USART 功能框圖 2.1 功能引腳 TX: 發送數據輸出引
[單片機]
【STM32】5分鐘了解STM32的<font color='red'>串口通信</font>
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

隨便看看

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 新密市| 西安市| 内黄县| 武平县| 甘肃省| 永寿县| 奇台县| 武平县| 民和| 泾源县| 陵水| 宁安市| 密山市| 商南县| 佛坪县| 宿州市| 许昌市| 塘沽区| 浮山县| 江安县| 田林县| 外汇| 新乡县| 江安县| 绥阳县| 拜泉县| 抚州市| 杭锦旗| 六盘水市| 包头市| 兴仁县| 札达县| 米易县| 夹江县| 阿坝县| 碌曲县| 朔州市| 名山县| 灌南县| 金堂县| 上饶县|