當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]首先,我是看著這位博主的文章受到的啟發(fā),進(jìn)而加深了自己對(duì)USART的理解。下面是自己改裝并實(shí)驗(yàn)過(guò)的程序。原文:http://www.cnblogs.com/greatwgb/archive/2011/07/28/2119350.html1.串口的基本概念在STM32的參考手冊(cè)

首先,我是看著這位博主的文章受到的啟發(fā),進(jìn)而加深了自己對(duì)USART的理解。下面是自己改裝并實(shí)驗(yàn)過(guò)的程序。


原文:http://www.cnblogs.com/greatwgb/archive/2011/07/28/2119350.html

1.串口的基本概念

在STM32的參考手冊(cè)中,串口被描述成通用同步異步收發(fā)器(USART),它提供了一種靈活的方法與使用工業(yè)標(biāo)準(zhǔn)NRZ異步串行數(shù)據(jù)格式的外部設(shè)備之間進(jìn)行全雙工數(shù)據(jù)交換。USART利用分?jǐn)?shù)波特率發(fā)生器提供寬范圍的波特率選擇。它支持同步單向通信和半雙工單線通信,也支持LIN(局部互聯(lián)網(wǎng)),智能卡協(xié)議和IrDA(紅外數(shù)據(jù)組織)SIR ENDEC規(guī)范,以及調(diào)制解調(diào)器(CTS/RTS)操作。它還允許多處理器通信。還可以使用DMA方式,實(shí)現(xiàn)高速數(shù)據(jù)通信。

USART通過(guò)3個(gè)引腳與其他設(shè)備連接在一起,任何USART雙向通信至少需要2個(gè)引腳:接受數(shù)據(jù)輸入(RX)和發(fā)送數(shù)據(jù)輸出(TX)。

RX:接受數(shù)據(jù)串行輸入。通過(guò)過(guò)采樣技術(shù)來(lái)區(qū)別數(shù)據(jù)和噪音,從而恢復(fù)數(shù)據(jù)。

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

2.串口的如何工作的

一般有兩種方式:查詢(xún)和中斷。

(1)查詢(xún):串口程序不斷地循環(huán)查詢(xún),看看當(dāng)前有沒(méi)有數(shù)據(jù)要它傳送。如果有,就幫助傳送(可以從PC到STM32板子,也可以從STM32板子到PC)。

(2)中斷:平時(shí)串口只要打開(kāi)中斷即可。如果發(fā)現(xiàn)有一個(gè)中斷來(lái),則意味著要它幫助傳輸數(shù)據(jù)——它就馬上進(jìn)行數(shù)據(jù)的傳送。同樣,可以從PC到STM3板子,也可以從STM32板子到PC。

程序源碼:

/*************************************USART(通用同步異步收發(fā)器)實(shí)驗(yàn)使用USART1實(shí)現(xiàn)數(shù)據(jù)的發(fā)送與接收日期:2016.2.25******************************************/#include"stm32f10x.h"FlagStatusRX_status;//voidRCC_cfg();voidGPIO_cfg(void);voidUSART_cfg(void);voidNVIC_cfg(void);intmain(){inti;unsignedcharTxBuf1[]="HELLO,QIANSHUAI,WelcometomySTM32!Pleasepressanykey!";GPIO_cfg();NVIC_cfg();USART_cfg();USART_ClearFlag(USART1,USART_FLAG_TC);//清除標(biāo)志位,否則第1位數(shù)據(jù)會(huì)丟失for(i=0;TxBuf1[i]!='