通用同步異步收發(fā)器(USART) 提供了一個(gè)靈活方便的串行數(shù)據(jù)交換接口,數(shù)據(jù)幀可以通過(guò)全雙工或半雙工,同步或異步的方式進(jìn)行傳輸。 USART提供了可編程的波特率發(fā)生器,能對(duì)UCLK(PCLK1或PCLK2) 進(jìn)行分頻產(chǎn)生USART發(fā)送和接收所需的特定頻率。
USART不僅支持標(biāo)準(zhǔn)的異步收發(fā)模式,還實(shí)現(xiàn)了一些其他類(lèi)型的串行數(shù)據(jù)交換模式,如紅外編碼規(guī)范, SIR,智能卡協(xié)議, LIN, 半雙工以及同步模式。它還支持多處理器通信和Modem流控操作(CTS/RTS)。數(shù)據(jù)幀支持從LSB或者M(jìn)SB開(kāi)始傳輸。數(shù)據(jù)位的極性和TX/RX引腳都可以靈活配置。部分USART支持DMA功能,以實(shí)現(xiàn)高速率的數(shù)據(jù)通信,支持情況根據(jù)不同芯片型號(hào)而定。
10.1.USART 基礎(chǔ)知識(shí)
通信方式的分類(lèi):并行通信、串行通信
- 并行通信:是指數(shù)據(jù)的各位同時(shí)在多根數(shù)據(jù)線(xiàn)上發(fā)送或接收,如圖所示。
并行通信的特點(diǎn):控制簡(jiǎn)單,傳輸速度快;由于傳輸線(xiàn)多,適用于距離近傳輸。
- 串行通信:是數(shù)據(jù)的各位在同一根數(shù)據(jù)線(xiàn)上依次逐位發(fā)送或接收,如圖所示
串行通信的特點(diǎn):控制復(fù)雜,傳輸速度較慢;只需要一根線(xiàn),適用于遠(yuǎn)距離傳輸。
串行通信方式的分類(lèi)
在串行通信中,根據(jù)對(duì)數(shù)據(jù)流的分界、定時(shí)及同步方法不同,可以分為同步串行通信方式和異步串行通信方式。
- 同步串行通信方式:把許多字符組成一個(gè)信息組,或稱(chēng)為信息幀,每幀的開(kāi)始用同步字符來(lái)指示。并且發(fā)送和接收的雙方必須采用同一時(shí)鐘,這樣接收方就可以用時(shí)鐘信號(hào)來(lái)確定每個(gè)信號(hào) 位。同步通信如圖所示:
同步通信:發(fā)送端和接收端必須使用統(tǒng)一時(shí)鐘,它是一種連續(xù)傳送數(shù)據(jù)的通信方式,一次通信傳送多個(gè)字符數(shù)據(jù),稱(chēng)為一幀信息。幀格式如圖所示:
同步串行通信幀:是將許多字符組成一個(gè)信息幀,這樣字符可以一個(gè)接一個(gè)的傳輸,但是,在每幀信息的開(kāi)始要加上同步字符,在沒(méi)有信息要傳輸時(shí),要填上空字符,因?yàn)橥絺鬏敳辉试S有間 隙。
同步串行通信特點(diǎn):必須有同步時(shí)鐘,傳輸信息量大,傳輸速率高,但是傳輸設(shè)備復(fù)雜,技術(shù)要求高。
- 異步串行通訊方式:是指通訊雙方以一個(gè)字符(包括特定附加位)作為數(shù)據(jù)傳輸單位且發(fā)送方傳送字符的間隔時(shí)間不一定,具有不規(guī)則數(shù)據(jù)段傳送特性的串行數(shù)據(jù)傳輸。異步串行通信如圖所示:
異步通信:是指發(fā)送和接收端使用各自的時(shí)鐘,并且它是一種不連續(xù)傳輸?shù)耐ㄐ欧绞剑淮瓮ㄐ胖粋饕粋€(gè)字符數(shù)據(jù),稱(chēng)為字符幀。字符幀之間的間隙可以是任意間隙。它的幀格式如圖所示:
異步串行通信幀:是將一個(gè)字節(jié)數(shù)據(jù)加上起始位、校驗(yàn)位、停止位,構(gòu)成的字符幀。由于異步通信沒(méi)有同步時(shí)鐘,所以接收端要時(shí)刻處于接收狀態(tài)。
起始位:在沒(méi)有數(shù)據(jù)傳送時(shí)即空閑狀態(tài),此時(shí)通信線(xiàn)上為邏輯“1”狀態(tài)。當(dāng)發(fā)送端要發(fā)送1個(gè)字符數(shù)據(jù)時(shí),首先發(fā)送一個(gè)邏輯“0”信號(hào),這個(gè)低電平就是幀格式的起始位。其作用就是告訴接收端開(kāi)始發(fā)送一幀數(shù)據(jù)。接收端檢測(cè)到這個(gè)低電平后,就準(zhǔn)備接收數(shù)據(jù)信號(hào)。
數(shù)據(jù)位:在起始位之后,發(fā)送端發(fā)出的就是數(shù)據(jù)位,數(shù)據(jù)位的位數(shù)沒(méi)有嚴(yán)格限制5~9位都行。低位在前,高位在后,由低位到高位逐位傳送。USART一般是8位。
校驗(yàn)位:數(shù)據(jù)位發(fā)送完成之后,可發(fā)送一位用來(lái)檢驗(yàn)數(shù)據(jù)在傳送過(guò)程中是否出錯(cuò)的奇偶校驗(yàn)位。奇偶校驗(yàn)是收發(fā)雙方預(yù)先約定好的有限差錯(cuò)檢驗(yàn)方式之一。有時(shí)也可以無(wú)校驗(yàn)。
停止位:字符幀格式的最后部分是停止位,邏輯“1”電平有效,它可占1/2位、1位、1.5位或2位。停止位表示傳送一幀信息的結(jié)束,也為發(fā)送下一幀信息做好準(zhǔn)備。
異步串行通信特點(diǎn):不需要時(shí)鐘同步,通信實(shí)現(xiàn)簡(jiǎn)單,設(shè)備開(kāi)銷(xiāo)小。但是傳輸速率不高。
串行通信數(shù)據(jù)傳送方向
根據(jù)串行數(shù)據(jù)的傳輸方向,我們可以將通信分為單工、半雙工、全雙工。
單工:是指數(shù)據(jù)傳輸僅能沿一個(gè)方向,不能實(shí)現(xiàn)反向傳輸。
半雙工:是指數(shù)據(jù)傳輸可以沿兩個(gè)方向,但需要分時(shí)進(jìn)行傳輸。
全雙工:是指數(shù)據(jù)可以同時(shí)進(jìn)行雙向傳輸。
串行通信數(shù)據(jù)的傳輸方向
10.2.GD32 USART 外設(shè)原理簡(jiǎn)介
GD32芯片具有多個(gè)USART外設(shè)用于串口通訊,它是 Universal Synchronous Asynchronous Receiver and Transmitter的縮寫(xiě),即通用同步異步收發(fā)器可以靈活地與外部設(shè)備進(jìn)行全雙工數(shù)據(jù) 交換。有別于USART,它還有具有UART外設(shè)(Universal Asynchronous Receiver and Transmitter),它是在USART基礎(chǔ)上裁剪掉了同步通信功能,只有異步通信。簡(jiǎn)單區(qū)分同步和異步就是看通信時(shí)需不需要對(duì)外提供時(shí)鐘輸出。
因篇幅有限,本文無(wú)法詳細(xì)介紹GD32所有系列USART外設(shè)接口,下面以GD32F30x為列,著重介紹下GD32F30x的USART外設(shè)簡(jiǎn)介和結(jié)構(gòu)框圖,后介紹下各個(gè)系列的差異。
GD32 USART 主要特性
? NRZ標(biāo)準(zhǔn)格式(Mark/Space)。
? 全雙工異步通信。
? 可編程的波特率產(chǎn)生器:
– 由外設(shè)時(shí)鐘分頻產(chǎn)生,其中USART0由PCLK2分頻得到,USART1/2和UART3/4由PCLK1分頻得到;
– 16倍過(guò)采樣;
– 當(dāng)時(shí)鐘頻率為120M,過(guò)采樣為16,最高速度可到7.5MBits/s。
? 完全可編程的串口特性:
– 偶校驗(yàn)位,奇校驗(yàn)位,無(wú)校驗(yàn)位的生成/檢測(cè);
– 數(shù)據(jù)位(8或9位);
– 產(chǎn)生0.5,1,1.5或者2個(gè)停止位。
? 發(fā)送器和接收器可分別使能。
? 支持硬件Modem流控操作(CTS/RTS)。
? DMA訪問(wèn)數(shù)據(jù)緩沖區(qū)。
? LIN斷開(kāi)幀的產(chǎn)生和檢測(cè)。
? 支持紅外數(shù)據(jù)協(xié)議(IrDA)。
? 同步傳輸模式以及為同步傳輸輸出發(fā)送時(shí)鐘。
? 支持兼容ISO7816-3的智能卡接口:
– 字節(jié)模式(T=0);
– 塊模式(T=1);
– 直接和反向轉(zhuǎn)換。
? 多處理器通信:
– 如果地址不匹配,則進(jìn)入靜默模式;
– 通過(guò)線(xiàn)路空閑檢測(cè)或者地址掩碼檢測(cè)從靜默模式喚醒。
? 多種狀態(tài)標(biāo)志:
– 傳輸檢測(cè)標(biāo)志:接收緩沖區(qū)不為空(RBNE),發(fā)送緩沖區(qū)為空(TBE),傳輸完成(TC),忙(BSY);
– 錯(cuò)誤檢測(cè)標(biāo)志:過(guò)載錯(cuò)誤(ORERR),噪聲錯(cuò)誤(NERR),幀格式錯(cuò)誤(FERR),奇偶校驗(yàn)錯(cuò)誤(PERR);
– 硬件流控操作標(biāo)志:CTS變化(CTSF);
– LIN模式標(biāo)志:LIN斷開(kāi)檢測(cè)(LBDF);
– 多處理器通信模式標(biāo)志:IDLE幀檢測(cè)(IDLEF);
– 智能卡模式標(biāo)志:塊結(jié)束(EBF)和接收超時(shí)(RTF);
– 若相應(yīng)的中斷使能,這些事件發(fā)生將會(huì)觸發(fā)中斷。
USART0/1/2完全實(shí)現(xiàn)上述功能,但是UART3/4只實(shí)現(xiàn)了上面所介紹的部分功能,下面這些功能在UART3/4中沒(méi)有實(shí)現(xiàn):
? 智能卡模式;
? 同步模式;
? 硬件流操作(CTS/RTS);
? 設(shè)置數(shù)據(jù)極性。
USART 結(jié)構(gòu)框圖
USART 功能引腳:
TX:發(fā)送數(shù)據(jù)輸出引腳
SW_RX:數(shù)據(jù)接收引腳,只用于單線(xiàn)和智能卡模式,屬于內(nèi)部腳,沒(méi)有具體的外部引腳。
RX:接收數(shù)據(jù)輸入引腳
nRTS:請(qǐng)求以發(fā)送(Request To Send),n表示低電平有效。如果使能RTS流控制,當(dāng)USART接收器準(zhǔn)備好接收新數(shù)據(jù)時(shí)就會(huì)將nRTS變成低電平;當(dāng)接收寄存器已滿(mǎn)時(shí),nRTS將被設(shè)置為高電平。該引腳只適用于硬件流控制。
nCTS:清除以發(fā)送(Clear To Send),n表示低電平有效。如果使能CTS流控制,發(fā)送器在發(fā)送下一幀數(shù)據(jù)之前會(huì)檢測(cè)nCTS引腳,如果為低電平,表示可以發(fā)送數(shù)據(jù),如果為高電平則在發(fā)送完當(dāng)前數(shù)據(jù)幀之后停止發(fā)送。該引腳只適用于硬件流控制。
CK:發(fā)送器時(shí)鐘輸出引腳。這個(gè)引腳僅適用于同步模式。具體各系列USART引腳對(duì)應(yīng),可見(jiàn)相應(yīng)的Datasheet。
波特率發(fā)生器:如圖 0-36 USART結(jié)構(gòu)框圖的②所示,波特率分頻系數(shù)是一個(gè)16位的數(shù)字,包含12位整數(shù)部分和4位小數(shù)部分。波特率發(fā)生器使用這兩部分組合所得的數(shù)值來(lái)確定波特率。由于具有小數(shù)部分的波特率分頻系數(shù),將使USART能夠產(chǎn)生所有標(biāo)準(zhǔn)波特率。
波特率分頻系數(shù)(USARTDIV) 與系統(tǒng)時(shí)鐘具有如下關(guān)系:
USART0的系統(tǒng)時(shí)鐘為PCLK2,USART1/2和UART3/4的系統(tǒng)時(shí)鐘為PCLK1。在使能USART之前,必須在時(shí)鐘控制單元使能系統(tǒng)時(shí)鐘。
控制器:如USART結(jié)構(gòu)框圖所示,USART有專(zhuān)門(mén)控制發(fā)送的發(fā)送器、控制接收的接收器,還有喚醒單元、中斷控制等等。使用USART之前需要向USART_CTL0寄存器的UEN位置1使能USART。發(fā)送或者接收數(shù)據(jù)字長(zhǎng)可選8位或9位,由USART_CTL0的WL位控制。
數(shù)據(jù)寄存器:如USART結(jié)構(gòu)框圖所示,USART數(shù)據(jù)寄存器(USART_DATA)只有低9位有效,并且第9位數(shù)據(jù)是否有效要取決于USART控制寄存器1(USART_CTL0)的WL位設(shè)置,當(dāng)WL位為0時(shí)表示8位數(shù)據(jù)字長(zhǎng),當(dāng)WL位為1表示9位數(shù)據(jù)字長(zhǎng),我們一般使用8位數(shù)據(jù)字長(zhǎng)。USART_DATA包含了已發(fā)送的數(shù)據(jù)或者接收到的數(shù)據(jù)。USART_DATA實(shí)際是包含了兩個(gè)寄存器,一個(gè)專(zhuān)門(mén)用于發(fā)送的可寫(xiě)TDATA,一個(gè)專(zhuān)門(mén)用于接收的可讀RDATA。當(dāng)進(jìn)行發(fā)送操作時(shí),往USART_DATA寫(xiě)入數(shù)據(jù)會(huì)自動(dòng)存儲(chǔ)在TDATA內(nèi);當(dāng)進(jìn)行讀取操作時(shí),向USART_DATA讀取數(shù)據(jù)會(huì)自動(dòng)提取RDATA數(shù)據(jù)。
TDATA和RDATA都是介于系統(tǒng)總線(xiàn)和移位寄存器之間。串行通信是一個(gè)位一個(gè)位傳輸?shù)模l(fā)送時(shí)把TDATA內(nèi)容轉(zhuǎn)移到發(fā)送移位寄存器,然后把移位寄存器數(shù)據(jù)每一位發(fā)送出去,接收時(shí)把接收到的每一位順序保存在接收移位寄存器內(nèi)然后才轉(zhuǎn)移到RDATA。
USART支持DMA傳輸,可以實(shí)現(xiàn)高速數(shù)據(jù)傳輸。
校驗(yàn)控制:GD32系列控制器USART支持奇偶校驗(yàn)。當(dāng)使用校驗(yàn)位時(shí),串口傳輸?shù)拈L(zhǎng)度將是8位的數(shù)據(jù)幀加上1位的校驗(yàn)位總共9位,此時(shí)USART_CTL0寄存器的WL位需要設(shè)置為1,即9數(shù)據(jù)位。將USART_CTL0寄存器的PCEN位置1就可以啟動(dòng)奇偶校驗(yàn)控制,奇偶校驗(yàn)由硬件自動(dòng)完成。啟動(dòng)了奇偶校驗(yàn)控制之后,在發(fā)送數(shù)據(jù)幀時(shí)會(huì)自動(dòng)添加校驗(yàn)位,接收數(shù)據(jù)時(shí)自動(dòng)驗(yàn)證校驗(yàn)位。接收數(shù)據(jù)時(shí)如果出現(xiàn)奇偶校驗(yàn)位驗(yàn)證失敗,會(huì)見(jiàn)USART_STAT0寄存器的PERR位置1,并可以產(chǎn)生奇偶校驗(yàn)中斷。
使能了奇偶校驗(yàn)控制后,每個(gè)字符幀的格式將變成:起始位+數(shù)據(jù)幀+校驗(yàn)位+停止位。
中斷控制:USART有多個(gè)中斷請(qǐng)求事件,具體可見(jiàn)所示。
各系列 USART 功能差異 GD32系列MCU有關(guān)USART外設(shè)各系列功能差異如GD32各系列MCU USART外設(shè)功能差異表所示。
GD32 各系列 MCU USART 外設(shè)功能差異表
10.3.硬件連接說(shuō)明
為利用USART實(shí)現(xiàn)開(kāi)發(fā)板與電腦通信,需要用到一個(gè)USB轉(zhuǎn)USART的IC,我們選擇CH340G芯片來(lái)實(shí)現(xiàn)這個(gè)功能,CH340G是一個(gè)USB總線(xiàn)的轉(zhuǎn)接芯片,實(shí)現(xiàn)USB轉(zhuǎn)USART、USB轉(zhuǎn)IrDA紅外或者USB轉(zhuǎn)打印機(jī)接口,我們使用其USB轉(zhuǎn)USART功能。具體電路設(shè)計(jì)見(jiàn)下圖USB轉(zhuǎn)串口硬件設(shè)計(jì)。
我們將CH340G的TXD引腳與USART的RX引腳連接,CH340G的RXD引腳與USART的TX引腳連接。
5.10.4.軟件配置說(shuō)明
本小節(jié)講解USART_Example歷程中USART模塊的配置說(shuō)明,主要包括外設(shè)時(shí)鐘配置、GPIO引腳 配置、USART外設(shè)配置、主函數(shù)介紹以及運(yùn)行結(jié)果。本例程主要介紹GD32 MCU各系列USART 模塊的輪詢(xún)發(fā)送中斷接收,有關(guān)USART其他功能例程可參考各系列固件庫(kù)歷程。 USART 外設(shè)配置
USART外設(shè)配置如代碼清單USART例程USART外設(shè)配置所示。首先是對(duì)各項(xiàng)外設(shè)時(shí)鐘初始化,接著初始化GPIO:GD32F10X、GD32F30X、GD32F20X、GD32E10X系列GPIO配置相同,PA9配置為復(fù)用推挽輸出;PA10需配置為浮空輸入。GD32F1X0、GD32F4XX、GD32F3X0、GD32E23X系列GPIO配置基本相同,不同在于PA9/PA10引腳的AF復(fù)用功能配置不同,在GD32F1X0、GD32F3X0和GD32E23X上,需要配置為AF1模式,在GD32F4XX上需要配置為AF7模式。然后配置USART接收中斷優(yōu)先級(jí)分組。最后配置USART初始化:GD32全系列MCU中USART外設(shè)配置基本相同,在本例程中,USART既可以發(fā)送可以接收,GD32標(biāo)準(zhǔn)庫(kù)提供了USART各項(xiàng)初始化的函數(shù)接口,其初始化函數(shù)接口說(shuō)明如USART函數(shù)說(shuō)明列表所示。因USART使用了C函數(shù)的printf函數(shù),所以重定向了printf到USART,還得在KEIL的魔術(shù)棒Target配置下打開(kāi)” Use MicroLIB”。
代碼清單 USART 例程 USART 外設(shè)配置
void usart_init(void) { rcu_periph_clock_enable(RCU_GPIOA); rcu_periph_clock_enable(RCU_USART0); #if defined GD32F10X_HD || GD32F30X_HD || GD32F20X_CL || GD32E10X rcu_periph_clock_enable(RCU_AF); /* connect port to USARTx_Tx */ gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9); /* connect port to USARTx_Rx */ gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_10); nvic_irq_enable(USART0_IRQn, 2U, 0U); #elif defined GD32F1X0 || GD32F4XX || GD32F3X0 || GD32E230 #if defined GD32F1X0 || GD32F3X0 || GD32E230 /* connect port to USARTx_Tx USARTx_Rx*/ gpio_af_set(GPIOA, GPIO_AF_1, GPIO_PIN_9 | GPIO_PIN_10 ); #elif defined GD32F4XX gpio_af_set(GPIOA, GPIO_AF_7, GPIO_PIN_9 | GPIO_PIN_10 ); #endif #if defined GD32F1X0 || GD32F3X0 || GD32F4XX nvic_irq_enable(USART0_IRQn, 2U, 0U); #elif defined GD32E230 nvic_irq_enable(USART0_IRQn, 2U); #endif /* configure USART Tx as alternate function push-pull */ gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_9); gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9); /* configure USART Rx as alternate function push-pull */ gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_10); gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_10); #endif /* USART configure */ usart_deinit(USART0); usart_baudrate_set(USART0, 115200U); usart_word_length_set(USART0, USART_WL_8BIT); usart_stop_bit_set(USART0, USART_STB_1BIT); usart_parity_config(USART0, USART_PM_NONE); usart_hardware_flow_rts_config(USART0, USART_RTS_DISABLE); usart_hardware_flow_cts_config(USART0, USART_CTS_DISABLE); usart_receive_config(USART0, USART_RECEIVE_ENABLE); usart_transmit_config(USART0, USART_TRANSMIT_ENABLE); usart_enable(USART0); } /* retarget the C library printf function to the USART */ int fputc(int ch, FILE *f) { usart_data_transmit(USART0, (uint8_t)ch); while (RESET == usart_flag_get(USART0, USART_FLAG_TBE)); return ch; }
USART 函數(shù)說(shuō)明列表
中斷函數(shù)
中斷函數(shù)如代碼清單 USART 中斷函數(shù)所示,GD32 所有函數(shù)中斷接收函數(shù)相同:先檢測(cè) USART_INT_FLAG_RBNE 置 1 時(shí),執(zhí)行數(shù)據(jù)接收,當(dāng)數(shù)據(jù)接收到設(shè)定的位數(shù)后,關(guān)閉 USART 接收中斷。
void USART0_IRQHandler(void) { if(RESET != usart_interrupt_flag_get(USART0, USART_INT_FLAG_RBNE)){ /* receive data */ rxbuffer[rxcount++] = usart_data_receive(USART0); if(rxcount == rx_size){ usart_interrupt_disable(USART0, USART_INT_RBNE); } } }
主函數(shù)說(shuō)明 主函數(shù)如代碼清單USART例程主函數(shù)所示,該主函數(shù)主要分成三個(gè)部分,USART初始化、USART 輪詢(xún)發(fā)送 buffer 、 開(kāi)啟中斷接收 buffer 當(dāng) 數(shù) 據(jù) 接 收 完 成 時(shí) 執(zhí) 行 printf 打 印函數(shù):printf("\n\rUSART receive successfully!\n\r");。
int main(void) { usart_init(); printf("GD32 WELCOME"); while(txcount
運(yùn)行結(jié)果 將USART_Example例程按照對(duì)應(yīng)的芯片工程編譯完成后,下載到對(duì)應(yīng)芯片中,采用USB轉(zhuǎn)USART連接電腦,使用串口助手,可查看MCU發(fā)送的結(jié)果,電腦發(fā)送數(shù)據(jù)MCU返回的結(jié)果。
具體可如下圖USART運(yùn)行結(jié)果所示。
10.5.USART 使用注意事項(xiàng)
(1) 使用 USART,收發(fā)都是 DMA 方式,由于接受數(shù)據(jù)幀長(zhǎng)度不固定,可以采用 USART Receive timeout 標(biāo)志作為 USART DMA 接收完成標(biāo)志,采用 TC 作為 USART DMA 發(fā)送完成標(biāo)志。
(2) USART 只要發(fā)送寄存器為空,就會(huì)一直有中斷,因此,要是不發(fā)送數(shù)據(jù)時(shí),在 USART中斷處理函數(shù)中把發(fā)送中斷關(guān)閉,只在開(kāi)始發(fā)送時(shí)才打開(kāi);接收同理
本教程由GD32 MCU方案商聚沃科技原創(chuàng)發(fā)布,了解更多GD32 MCU教程,關(guān)注聚沃科技官網(wǎng)
-
單片機(jī)
+關(guān)注
關(guān)注
6017文章
44264瀏覽量
626647 -
mcu
+關(guān)注
關(guān)注
146文章
16498瀏覽量
346671 -
嵌入式
+關(guān)注
關(guān)注
5031文章
18673瀏覽量
296145 -
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
4701瀏覽量
95715 -
USART
+關(guān)注
關(guān)注
1文章
195瀏覽量
30596
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論