STM32例程串口實驗_第1頁
STM32例程串口實驗_第2頁
STM32例程串口實驗_第3頁
STM32例程串口實驗_第4頁
STM32例程串口實驗_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

WordWord資料實驗要求?使用開發(fā)板上的串口向發(fā)送信息通過串口向開發(fā)板發(fā)送數(shù)據(jù), 在接收到后,確認(rèn)信息,并通過串口返回數(shù)據(jù)例如:開發(fā)板先發(fā)送一個字符'c,然后發(fā)送一個字符'a,開發(fā)板接收到后,再發(fā)送一個字符‘'編輯]實驗?zāi)康膶W(xué)習(xí)和掌握的 模塊的工作原理和使用方法學(xué)習(xí)和掌握 固件庫的使用掌握串口中斷的使用方法編輯]實驗分析硬件分析:的工作原理軟件分析:固件庫實例編輯]開發(fā)板原理圖設(shè)計R1OUTH2OUTT10UTR1OUTH2OUTT10UTT2OUT與主芯片的連接[%卻(15t[%卻(15t231IUSARTI_TX<C|USART1.RX| 〉PU9101PAI。10c*,, 1門N1ry/ !dji"IPA9/USARTUTX/TIM1,CH2PA1O/DSART1_RX/TIM1_CH3編輯]硬件知識點(diǎn)詳見 英文版參考手冊編輯通用同步異步收發(fā)器提供了一種靈活的方法與使用工業(yè)標(biāo)準(zhǔn)異步串行數(shù)據(jù)格式的外部設(shè)備之間進(jìn)行全雙工數(shù)據(jù)交換。利用小數(shù)波特率發(fā)生器提供寬范圍的波特率選擇。它支持同步單向通信和半雙工單線通信,也支持局部互連網(wǎng),智能卡協(xié)議和紅外數(shù)據(jù)組織規(guī)范,以及調(diào)制解調(diào)器操作。它還允許多處理器通信。使用多緩沖器配置的方式,可以實現(xiàn)高速數(shù)據(jù)通信。表模式支持

USARTmodesUSART1USART2USAAT3UART4UART5AsynchnqnQU5modeXXXXXHardwareFlowControlXXXNANAMu怖BufferCommunicatiion(DMA)XXXXNAMultiprocessorCommLinicationXXXXXSynchronousXXXNANASmancandXXXNANAHalbDuplex(Single-Wiremode)XXXXXIrDAXXXXXLINXXXXXX=supportfid:NA=notapplicable編輯內(nèi)部結(jié)構(gòu)

編輯引腳定義任何 雙向通信至少需要兩個引腳:接收數(shù)據(jù)輸入 和發(fā)送數(shù)據(jù)輸出X接收數(shù)據(jù)輸入。通過過采樣技術(shù)來區(qū)別數(shù)據(jù)和噪音,從而恢復(fù)數(shù)據(jù)。:發(fā)送數(shù)據(jù)輸出。當(dāng)發(fā)送器被禁止時,輸出引腳恢復(fù)到它的端口配置。當(dāng)發(fā)送器被激活,并且不發(fā)送數(shù)據(jù)時,引腳處于高電平。在單線和智能卡模式里,此口被同時用于數(shù)據(jù)的發(fā)送和接收。在同步模式中需要下列引腳:? :發(fā)送器時鐘輸出。此引腳輸出用于同步傳輸?shù)臅r鐘,在起始位和停止位上沒有時鐘脈沖,軟件可選地,可以在最后一個數(shù)據(jù)位送出一個時鐘脈沖。數(shù)據(jù)可以在上同步被接收。這可以用來控制帶有移位寄存器的外部設(shè)備例如驅(qū)動器。時鐘相位和極性都是軟件可編程的。在智能卡模式里,可以為智能卡提供時鐘。在 模式里需要下列引腳:模式下的數(shù)據(jù)輸入。模式下的數(shù)據(jù)輸出。在硬件流控模式中需要下列引腳:清除發(fā)送,若是高電平,在當(dāng)前數(shù)據(jù)傳輸結(jié)束時阻斷下一次的數(shù)據(jù)發(fā)送。發(fā)送請求,若是低電平,表明 準(zhǔn)備好接收數(shù)據(jù)表引腳配置Table22.USARTsUSARTpinoutConfigurationGPIOcanfiguration,USARTm_TXUlir悟xA:tBrnat?furctinnpush-pu'iHa:fduplexsynchronausmac^eA^ernatefunctionpuah-pu1l□SART^HXFullduplexInputfCoaling?Inputpuli-uphat口uWxsynchranousmcxieNotusedCanMu^ed獨(dú)agengfal10USART)t_CKSynchnoriQusmodeA:tsrnatgfurctiQnpush-pti^l□SARTx_ATSHardware「心大central應(yīng);ternat日functionpush-pti-lUSART)c_CTSHardwareflowcontrolIncultQalmg/Inputpuil-up編輯寄存器一個狀態(tài)寄存器一個數(shù)據(jù)寄存器三個控制寄存器一個波特率寄存器一個智能卡模式下的保護(hù)時間寄存器(寄存器描述。關(guān)于以上寄存器中每個位的具體定義,請參考寄存器描述。編輯控制邏輯發(fā)送控制接收控制時鐘控制硬件流控制

波特率控制(發(fā)送器和接收器)中斷控制喚醒單元編輯 寄存器描述下表列出了 寄存器的地址映射和復(fù)位值??梢砸园胱郑ㄎ唬┗蜃郑ㄎ唬┑姆绞皆L問這些外設(shè)寄存器。編輯()狀態(tài)寄存器編輯()狀態(tài)寄存器_軟件可以讀此位,也可以通過寫‘‘清除此位,寫’1對此位無影響。位31:1保0留位,由硬件強(qiáng)制為0位:標(biāo)志如果設(shè)置了位,當(dāng)輸入狀態(tài)變化時,該位由硬件置''。由軟件清’0(向該位寫’0)。如果 寄存器中的 1則產(chǎn)生中斷。0 狀態(tài)線上沒有變化;狀態(tài)線上發(fā)生變化。上,該位不可用。斷開檢測標(biāo)志當(dāng)檢測到 斷開時,該位由硬件置'’。由軟件清’0向該位寫’0)如果 寄存器中的 E則產(chǎn)生中斷。0沒有檢測到 斷開;1檢測到斷開。注意:若 I當(dāng) 時產(chǎn)生中斷。位X發(fā)送數(shù)據(jù)寄存器 空當(dāng) 寄存器中的數(shù)據(jù)被轉(zhuǎn)移到移位寄存器時,該位由硬件置’1。如果 寄存器中的 E則產(chǎn)生中斷。寫 寄存器,將該位清’0’。0:數(shù)據(jù)還沒有被轉(zhuǎn)移到移位寄存器;1:數(shù)據(jù)已經(jīng)被轉(zhuǎn)移到移位寄存器。注意:該位被用在單緩沖發(fā)送中。位C發(fā)送完成當(dāng)包含有數(shù)據(jù)的一幀發(fā)送完成后,并且 時,該位由硬件置‘1。如果 寄存器中的 ,則產(chǎn)生中斷。該位由軟件序列清’0先讀一次 寄存器,后寫一次 寄存器)位也可以通過向該位寫’0’來清除,此清零方式只在多緩沖通信中推薦使用。0:發(fā)送還未完成;1:發(fā)送完成。位:讀數(shù)據(jù)寄存器 非空當(dāng) 移位寄存器中的數(shù)據(jù)被轉(zhuǎn)移到 寄存器時,該位由硬件置位。如果 寄存器中的 E則產(chǎn)生中斷。讀寄存器,將該位清零。 位也可以通過向該位寫’0來清除,此清零方式只在多緩沖通信中推薦使用。0:沒收到數(shù)據(jù);1:收到數(shù)據(jù),可以讀出。位:監(jiān)測到總線空閑當(dāng)檢測到總線空閑時,該位被硬件置位。如果 寄存器中的E則產(chǎn)生中斷。該位由軟件序列清除先讀 T后讀。0:沒有檢測到空閑總線;1:檢測到空閑總線。注意: 位不會再次被置位,直到 位被置位即又檢測到一次空閑總線)位:溢出錯誤的同時1移位寄存器中接收到的當(dāng)前數(shù)據(jù),準(zhǔn)備轉(zhuǎn)移至 寄存器時,該位被硬件置位。如果 中的 E則產(chǎn)生中斷。該位由軟件序列清零先讀 ,后讀 T0:沒有溢出錯誤;1:檢測到溢出錯誤。注意:該位被置位時,寄存器中的數(shù)據(jù)不會丟失,但是移位寄存器中的數(shù)據(jù)會被覆蓋。在多緩沖通信模式下,如果設(shè)置了位,則置位會產(chǎn)生中斷。位:噪聲錯誤標(biāo)志在接收到的幀中檢測到噪聲時,該位由硬件置位。該位由軟件序列清除先讀 ,再讀 T0:沒有檢測到噪聲;1:檢測到噪聲。注意:該位不會產(chǎn)生中斷,因為它和 一起出現(xiàn),硬件會在設(shè)置標(biāo)志時產(chǎn)生中斷。在多緩沖通信模式下,如果設(shè)置了 位,則置位會產(chǎn)生中斷。位:幀錯誤當(dāng)檢測到同步錯位,過多的噪聲或者斷開符,該位被硬件置位。由軟件序列將其清零先讀 ,再讀 。0:沒有檢測到幀錯誤;1檢測到幀錯誤或者符。注意:該位不會產(chǎn)生中斷,因為它和 一起出現(xiàn),硬件會在設(shè)置標(biāo)志時產(chǎn)生中斷。如果當(dāng)前傳輸?shù)臄?shù)據(jù)既產(chǎn)生了幀錯誤,又產(chǎn)生了溢出錯誤,硬件還是會繼續(xù)該數(shù)據(jù)的傳輸,并且只設(shè)置 位。在多緩沖通信模式下,如果設(shè)置了 位,則置位會產(chǎn)生中斷。位:校驗錯誤在接收模式下,如果出現(xiàn)奇偶校驗錯誤,該位被硬件置位。由軟件序列對其清零先讀,再讀 。在清除位前,軟件必須等待標(biāo)志位被置’1。如果 中的 ,則產(chǎn)生中斷。0:沒有奇偶校驗錯誤;1:奇偶校驗錯誤。編輯 數(shù)據(jù)寄存器位31:保9留位,由硬件強(qiáng)制為0位 :數(shù)據(jù)值包含了發(fā)送或接收的數(shù)據(jù)。由于它是由兩個寄存器組成的,一個給發(fā)送用D一個給接收用 ,該寄存器兼具讀和寫的功能。 寄存器提供了內(nèi)部總線和輸出移位寄存器之間的并行接口。 寄存器提供了輸入移位寄存器和內(nèi)部總線之間的并行接口。參見內(nèi)部結(jié)構(gòu)框圖如果 中的校驗控制使能位 E在發(fā)送數(shù)據(jù)時,寫到 的值根據(jù)數(shù)據(jù)的長度不同, 是第位或者第位會被后來的校驗位取代。接收數(shù)據(jù)時,讀到的 位是接收到的校驗位。編輯 ( )波特率寄存器311.26272625242222212D1BITIB1413.12111Qg7杼A3210DrV_Frafi1kj^3-0]rwrwrwrwrarwFWrwrwIWrwrwmVWrwirw位31:保1留6位,硬件強(qiáng)制為0位 : 的整數(shù)部分這位定義了 分頻器除法因子 的整數(shù)部分。位 : 的小數(shù)部分這位定義了 分頻器除法因子 的小數(shù)部分。編輯 ( e控制寄存器31 30 29 2S 27 2B 25 24 23 22 21 20 19 17 161$ M1312Hi10997 654321QUEMWAKEpeePSFEIETK£IETCIGRYNEIEKXEIETtA£RWLJSQKEWrwrwrwrwrwrw finIWrwmrwrw位31:1保4留位,硬件強(qiáng)制為0位:使能當(dāng)該位被清零,在當(dāng)前字節(jié)傳輸完成后 的分頻器和輸出停止工作,以減少功耗。該位由軟件設(shè)置和清零。0 分頻器和輸出被禁止;1 模塊使能。位:字長該位定義了數(shù)據(jù)字的長度,由軟件對其設(shè)置和清零0一個起始位,個數(shù)據(jù)位,個停止位;一個起始位,個數(shù)據(jù)位,個停止位。注意:在數(shù)據(jù)傳輸過程中(發(fā)送或者接收時),不能修改這個位。位:喚醒的方法這位決定了把 喚醒的方法,由軟件對該位設(shè)置和清零。0:被空閑總線喚醒;1:被地址標(biāo)記喚醒。位:檢驗控制使能用該位選擇是否進(jìn)行硬件校驗控制(對于發(fā)送來說就是校驗位的產(chǎn)生;對于接收來說就是校驗位的檢測)。當(dāng)使能了該位,在發(fā)送數(shù)據(jù)的最高位(如果:=,1最高位就是第9位;如果:=,0最高位就是第8位)插入校驗位;對接收到的數(shù)據(jù)檢查其校驗位。軟件對它置’1’或清’0’。一旦設(shè)置了該位,當(dāng)前字節(jié)傳輸完成后,校驗控制才生效。0:禁止校驗控制;1:使能校驗控制。位:校驗選擇當(dāng)校驗控制使能后,該位用來選擇是采用偶校驗還是奇校驗。軟件對它置’1’或清’0’。當(dāng)前字節(jié)傳輸完成后,該選擇生效。0:偶校驗;1:奇校驗。中斷使能該位由軟件設(shè)置或清除。0:禁止產(chǎn)生中斷;1當(dāng) 中的為‘1時,產(chǎn)生 中斷。位:發(fā)送緩沖區(qū)空中斷使能該位由軟件設(shè)置或清除。0:禁止產(chǎn)生中斷;1當(dāng) 中的為‘1時,產(chǎn)生中斷。位:發(fā)送完成中斷使能該位由軟件設(shè)置或清除。0:禁止產(chǎn)生中斷;1當(dāng) 中的為‘'時,產(chǎn)生 中斷。位 :接收緩沖區(qū)非空中斷使能該位由軟件設(shè)置或清除。0:禁止產(chǎn)生中斷;1當(dāng) 中的或者為''時,產(chǎn)生 中斷。位: 中斷使能該位由軟件設(shè)置或清除。0:禁止產(chǎn)生中斷;1當(dāng) 中的為‘'時,產(chǎn)生 中斷。位:發(fā)送使能該位使能發(fā)送器。該位由軟件設(shè)置或清除。0:禁止發(fā)送;1:使能發(fā)送。注意:在數(shù)據(jù)傳輸過程中,除了在智能卡模式下,如果位上有個脈沖(即設(shè)置為’0’之后再設(shè)置為’1’),會在當(dāng)前數(shù)據(jù)字傳輸完成后,發(fā)送一個“前導(dǎo)符”(空閑總線)。當(dāng)被設(shè)置后,在真正發(fā)送開始之前,有一個比特時間的延遲。位:接收使能該位由軟件設(shè)置或清除。0:禁止接收;1使能接收,并開始搜尋引腳上的起始位。位:接收喚醒該位用來決定是否把 置于靜默模式。該位由軟件設(shè)置或清除。當(dāng)喚醒序列到來時,硬件也會將其清零。0:接收器處于正常工作模式;1:接收器處于靜默模式。注意:在把 置于靜默模式設(shè)置位之前, 要已經(jīng)先接收了一個數(shù)據(jù)字節(jié)。否則在靜默模式下,不能被空閑總線檢測喚醒。當(dāng)配置成地址標(biāo)記檢測喚醒 位1在 位被置位時,不能用軟件修改 位。位:發(fā)送斷開幀使用該位來發(fā)送斷開字符。該位可以由軟件設(shè)置或清除。操作過程應(yīng)該是軟件設(shè)置位它,然后在斷開幀的停止位時,由硬件將該位復(fù)位。0:沒有發(fā)送斷開字符;1:將要發(fā)送斷開字符。編輯 ( e控制寄存器311.2S27262524232221201B11716iFbasarvnd1S1413121110g7B543210Rsx.LINENSTOP[1:fl|iCLKEMCPQLCPHALBCLRas.LJBDIELBDLADD[3:£1|rwrwrwrwrwrw1Wrwiwrw附fW位31:保1留5位,硬件強(qiáng)制為0。位:模式使能該位由軟件設(shè)置或清除。0禁止模式;1使能模式。在模式下,可以用 寄存器中的位發(fā)送 同步斷開符低位,以及檢測 同步斷開符。位 :停止位這2位用來設(shè)置停止位的位數(shù)00:1個停止位;01:0.個5停止位;10:2個停止位;11:1.個5停止位;注:和不能用停止位和停止位。位:時鐘使能該位用來使能引腳0禁止引腳;1使能引腳。注:和 上不存在這一位。位 :時鐘極性在同步模式下,可以用該位選擇 引腳上時鐘輸出的極性。和位一起配合來產(chǎn)生需要的時鐘/數(shù)據(jù)的采樣關(guān)系0總線空閑時引腳上保持低電平;1總線空閑時引腳上保持高電平。注:和 上不存在這一位。位:時鐘相位在同步模式下,可以用該位選擇 引腳上時鐘輸出的相位。和位一起配合來產(chǎn)生需要的時鐘/數(shù)據(jù)的采樣關(guān)系(參見圖25和9圖26。0544/7540:在時鐘的第一個邊沿進(jìn)行數(shù)據(jù)捕獲;1:在時鐘的第二個邊沿進(jìn)行數(shù)據(jù)捕獲。注:和 上不存在這一位。位:最后一位時鐘脈沖在同步模式下,使用該位來控制是否在引腳上輸出最后發(fā)送的那個數(shù)據(jù)字節(jié) 對應(yīng)的時鐘脈沖0最后一位數(shù)據(jù)的時鐘脈沖不從輸出;1最后一位數(shù)據(jù)的時鐘脈沖會從輸出。注意:最后一個數(shù)據(jù)位就是第或者第個發(fā)送的位根據(jù) 寄存器中的位所定義的或者位數(shù)據(jù)幀格式)和 上不存在這一位。位7保留位,硬件強(qiáng)制為0位: 斷開符檢測中斷使能斷開符中斷屏蔽(使用斷開分隔符來檢測斷開符)0:禁止中斷;1只要 寄存器中的為’1就產(chǎn)生中斷。位: 斷開符檢測長度該位用來選擇是11位還是10位的斷開符檢測0:10位的斷開符檢測;1:11位的斷開符檢測。位4保留位,硬件強(qiáng)制為0位 3本設(shè)備的 節(jié)點(diǎn)地址該位域給出本設(shè)備 節(jié)點(diǎn)的地址。這是在多處理器通信下的靜默模式中使用的,使用地址標(biāo)記來喚醒某個設(shè)備。注意:在使能發(fā)送后不能改寫這三個位 、 、C編輯311USAR(TC_oCnRt3role控制寄存器25 24 S3 223212D191B17IB292S2726Reserveg B 7 6543210RB&flfTOdCTSIECT5ERTSE0MAT&CENNACKHDSELIRLPIRENEIER麻rwFWrwrwErwrwrw位31本保1留1位,硬件強(qiáng)制為0位: 中斷使能0:禁止中斷;1 寄存器中的 為’1時產(chǎn)生中斷。注:和 上不存在這一位。位:使能0禁止 硬件流控制;1 模式使能,只有 輸入信號有效拉成低電平時才能發(fā)送數(shù)據(jù)。如果在數(shù)據(jù)傳輸?shù)倪^程中, 信號變成無效,那么發(fā)完這個數(shù)據(jù)后,傳輸就停止下來。如果當(dāng) 為無效時,往數(shù)據(jù)寄存器里寫數(shù)據(jù),則要等到 有效時才會發(fā)送這個數(shù)據(jù)。注: 和上不存在這一位。位:使能0禁止 硬件流控制;中斷使能,只有接收緩沖區(qū)內(nèi)有空余的空間時才請求下一個數(shù)據(jù)。當(dāng)前數(shù)據(jù)發(fā)送完成后,發(fā)送操作就需要暫停下來。如果可以接收數(shù)據(jù)了,將輸出置為有效拉至低電平)注:和 上不存在這一位。位:使能發(fā)送該位由軟件設(shè)置或清除。0禁止發(fā)送時的 模式。1使能發(fā)送時的 模式;注:和 上不存在這一位。位 使能接收該位由軟件設(shè)置或清除。0禁止接收時的 模式。1使能接收時的 模式;注:和 上不存在這一位。位 智能卡模式使能該位用來使能智能卡模式0:禁止智能卡模式;1:使能智能卡模式。注:和 上不存在這一位。位:智能卡使能0校驗錯誤出現(xiàn)時,不發(fā)送C1校驗錯誤出現(xiàn)時,發(fā)送 。注:和 上不存在這一位。位:半雙工選擇選擇單線半雙工模式0:不選擇半雙工模式;1:選擇半雙工模式。位:紅外低功耗該位用來選擇普通模式還是低功耗紅外模式0:通常模式;1:低功耗模式。位:紅外模式使能該位由軟件設(shè)置或清除。0:不使能紅外模式;1:使能紅外模式。位I錯誤中斷使能在多緩沖通信模式下,如果該位為’1’,當(dāng)有幀錯誤、過載錯誤或者噪聲錯誤時 中的 ,或者0:禁止中斷;E或者 ,則產(chǎn)生中斷。1只要 中的 ,并且或者 ,則產(chǎn)生中斷中的 ,或者 ,編輯 ( )保護(hù)時間和預(yù)分頻寄存器位31:保1留6位,由硬件強(qiáng)制為0位 :保護(hù)時間值該位域規(guī)定了以波特時鐘為單位的保護(hù)時間。在智能卡模式下,需要這個功能。當(dāng)保護(hù)時間過去后,才會設(shè)置發(fā)送完成標(biāo)志(C。注:和 上不存在這一位。位 :預(yù)分頻器值在紅外 低功耗模式下:紅外低功耗波特率對系統(tǒng)時鐘分頻以獲得低功耗模式下的頻率:源時鐘被寄存器中的值(僅有8位有效)分頻0保留-不要寫入該值;00000:0對源0時1鐘1分頻;00000:0對源10時鐘2分頻;在紅外 的正常模式下: 只能設(shè)置為在智能卡模式下:4預(yù)分頻值對系統(tǒng)時鐘進(jìn)行分頻,給智能卡提供時鐘。寄存器中給出的值(低5位有效)乘以2后,作為對源時鐘的分頻因子0保留-不要寫入該值;

對1源時鐘進(jìn)行2分頻;對0源時鐘進(jìn)行4分頻;對1源時鐘進(jìn)行6分頻;位[7:在5智]能卡模式下沒有意義。注:和 上不存在這一位。編輯幀格式有三種幀格式:數(shù)據(jù)幀、空閑幀和斷開幀。,?LBCLbitcontrolslastdatadockpulseBreakframe有三種幀格式:數(shù)據(jù)幀、空閑幀和斷開幀。,?LBCLbitcontrolslastdatadockpulseBreakframeStopbftStarrbit"'LBCLbitcontrolslastdataclockpulse編輯數(shù)據(jù)幀由一個低電平的起始位,8位或9位數(shù)據(jù)位,和0.5/1/個1高.電5平/的2停止位組成。其中,數(shù)據(jù)位長度(字長)取決于 寄存器中的位;發(fā)送和接收時,最低有效位在前;當(dāng) 寄存器中的校驗控制使能位 時,最高有效位被校驗位代替;在同步模式下,引腳是否為最高有效位提供時鐘脈沖取決于 中的位;停止位數(shù)取決于 寄存器中的 。編輯空閑幀在一個幀周期內(nèi),全部為高電平。編輯斷開幀在一個幀周期內(nèi),全部為低電平。在斷開幀結(jié)束后,再發(fā)送1或2個高電平的停止位,以識別下一個低電平的起始位。編輯]小數(shù)波特率發(fā)送和接收由一共用的波特率發(fā)生器驅(qū)動,當(dāng)發(fā)送器和接收器的使能位分別(和)置位時,分別為其產(chǎn)生時鐘。接收器和發(fā)送器的波特率應(yīng)設(shè)置成相同。波特率=可以是的時鐘(用于 R也可以是 的時鐘用TOC\o"1-5"\h\z于 、3 4 )是一個無符號的定點(diǎn)數(shù),轉(zhuǎn)換成對應(yīng)的二進(jìn)制小數(shù)后,整數(shù)部分存放在 寄存器中的 ,小數(shù)部分存放在 寄存器中的 。注:在寫入 之后,波特率計數(shù)器會被波特率寄存器的新值替換。因此,不要在通信進(jìn)行中改變波特率寄存器的數(shù)值。編輯]配置流程波特率: 寄存器字長: 中的位停止位數(shù): 中的校驗控制: 中的位和位收發(fā)模式: 中的和硬件流控制: 中的 位和位使能: 寄存器中的如果采用多緩沖器通信,需配置 中的使能位。按多緩沖器通信中的描述配置 寄存器。如果需要產(chǎn)生中斷,則還要設(shè)置相應(yīng)中斷的使能位。完成上述配置后,就可以進(jìn)行數(shù)據(jù)的發(fā)送和接收了。編輯]發(fā)送過程如果在收發(fā)模式配置中,發(fā)送器被使能了,即 ,則可以進(jìn)行數(shù)據(jù)的發(fā)送。編輯空閑幀置位將使得 在第一個數(shù)據(jù)幀前發(fā)送一空閑幀。編輯數(shù)據(jù)幀開始時,發(fā)送數(shù)據(jù)寄存器 為空,E如果I則產(chǎn)生中斷。向 中寫入數(shù)據(jù)后, E由于發(fā)送移位緩沖器也為空,硬件就會將 中的數(shù)據(jù)發(fā)送到發(fā)送移位寄存器中。再次為空,E如果I則產(chǎn)生中斷。再次向 中寫入數(shù)據(jù)。不斷地重復(fù)上述步驟,直到發(fā)送完所有數(shù)據(jù)。在 寄存器中寫入最后一個數(shù)據(jù)字后,要等待,如果,則產(chǎn)生中斷,它表示最后一個數(shù)據(jù)幀的傳輸結(jié)束。當(dāng)需要關(guān)閉 或需要進(jìn)入停機(jī)模式之前,需要確認(rèn)傳輸結(jié)束,避免破壞最后一次傳輸。7.發(fā)送到發(fā)送移位寄存器中的數(shù)據(jù)在時鐘脈沖的激勵下按照數(shù)據(jù)幀的格式從腳上串行輸出。編輯斷開幀如果設(shè)置K在完成當(dāng)前數(shù)據(jù)發(fā)送后,將在線上發(fā)送一個斷開幀。斷開幀發(fā)送完成時在斷開幀的停止位時被硬件復(fù)位。 在最后一個斷開幀的結(jié)束處插入一邏輯‘1’,以保證能識別下一幀的起始位。注意:如果在開始發(fā)送斷開幀之前,軟件又復(fù)位了 位,斷開符號將不被發(fā)送。如果要發(fā)送兩個連續(xù)的斷開幀, 位應(yīng)該在前一個斷開符號的停止位之后置起。在數(shù)據(jù)傳輸期間不能復(fù)位位,否則將破壞腳上的數(shù)據(jù),因為波特率計數(shù)器停止計數(shù)。正在傳輸?shù)漠?dāng)前數(shù)據(jù)將丟失。編輯]接收過程如果在收發(fā)模式配置中,接收被使能了,即,則可以進(jìn)行數(shù)據(jù)的接收。編輯起始位偵測在中,如果辨認(rèn)出一個特殊的采樣序列,那么就認(rèn)為偵測到一個起始位。該序列為:1110X0X0X0000

RXRXlineConditionstovalidatethestartbitsampleclockAlleast2bitsoutof3at0AlleastRXRXlineConditionstovalidatethestartbitsampleclockAlleast2bitsoutof3at0Alleast2bitsoutof3at0Fallingedgedelectionsampleclock注意:1.如果該序列不完整,那么接收端將退出起始位偵測并回到空閑狀態(tài)(不設(shè)置標(biāo)志位)等待下降沿。2.如果3個采樣點(diǎn)都為‘0’(在第3、5、7位的第一次采樣,和在第8、9、的第二次采樣都為’0,則確認(rèn)收到起始位,這時設(shè)置 標(biāo)志位,如果 I則產(chǎn)生中斷。3.如果兩次3個采樣點(diǎn)上僅有2個是‘0’(第3、5、7位的采樣點(diǎn)和第8、9位的采樣點(diǎn),那么起始位仍然是有效的,但是會設(shè)置噪聲標(biāo)志位。如果不能滿足這個條件,則中止起始位的偵測過程,接收器會回到空閑狀態(tài)(不設(shè)置標(biāo)志位)。4.如果有一次3個采樣點(diǎn)上僅有2個是’0’(第3、5、7位的采樣點(diǎn)或第8、9 位的采樣點(diǎn),那么起始位仍然是有效的,但是會設(shè)置噪聲標(biāo)志位。編輯空閑幀由于發(fā)送器在發(fā)送第一個數(shù)據(jù)幀前會發(fā)送一個空閑幀,因此接收器會接收到一個空閑幀。當(dāng)一空閑幀被檢測到時,其處理步驟和接收到普通數(shù)據(jù)幀一樣,但如果位被設(shè)置將產(chǎn)生一個中斷。編輯數(shù)據(jù)幀開始時,接收數(shù)據(jù)寄存器為空,。接收器不斷地對腳上輸入的信號進(jìn)行偵測,一旦偵測到起始位,就將輸入的數(shù)據(jù)移進(jìn)接收移位寄存器中。3.當(dāng)接收移位寄存器接收到數(shù)據(jù)后,硬件就會將接收移位寄存器中的數(shù)據(jù)轉(zhuǎn)移到中。非空,E如果 I則產(chǎn)生中斷。在接收期間如果檢測到幀錯誤,噪聲或溢出錯誤,錯誤標(biāo)志將被置起,在多緩沖器通信時, 在每個字節(jié)接收后被置起,并由 對數(shù)據(jù)寄存器的讀操作而清零。在單緩沖器模式里,由軟件讀 寄存器完成對 位清除。 標(biāo)志也可以通過對它寫來清除。 位必須在下一字符接收結(jié)束前被清零,以避免溢出錯誤。注意:在接收數(shù)據(jù)時,位不應(yīng)該被復(fù)位。如果位在接收時被清零,當(dāng)前接收的數(shù)據(jù)會丟失。編輯斷開幀當(dāng)接收到一個斷開幀時, 像處理幀錯誤一樣處理它。編輯溢出錯誤如果 還沒有被復(fù)位,又接收到一個字符,則發(fā)生溢出錯誤。數(shù)據(jù)只有當(dāng)位被清零后才能從移位寄存器轉(zhuǎn)移到 寄存器。標(biāo)記是接收到每個字節(jié)后被置位的。如果下一個數(shù)據(jù)已被收到或先前請求還沒被服務(wù)時, 標(biāo)志仍是置起的,溢出錯誤產(chǎn)生。當(dāng)溢出錯誤產(chǎn)生時:位被置位。內(nèi)容將不會丟失。讀 寄存器仍能得到先前的數(shù)據(jù)。移位寄存器中以前的內(nèi)容將被覆蓋。隨后接收到的數(shù)據(jù)都將丟失。如果位被設(shè)置或和位都被設(shè)置,中斷產(chǎn)生。順序執(zhí)行對 和 寄存器的讀操作,可復(fù)位位注意:當(dāng) 位置位時,表明至少有個數(shù)據(jù)已經(jīng)丟失。有兩種可能性:如果E上一個有效數(shù)據(jù)還在接收寄存器 上,可以被讀出。如果,這意味著上一個有效數(shù)據(jù)已經(jīng)被讀走,已經(jīng)沒有東西可讀。當(dāng)上一個有效數(shù)據(jù)在中被讀取的同時又接收到新的也就是丟失的數(shù)據(jù)時,此種情況可能發(fā)生。在讀序列期間在 寄存器讀訪問和 讀訪問之間接收到新的數(shù)據(jù),此種情況也可能發(fā)生。編輯噪音錯誤使用過采樣技術(shù)(同步模式除外),通過區(qū)別有效輸入數(shù)據(jù)和噪聲來進(jìn)行數(shù)據(jù)恢復(fù)。如果三個采樣數(shù)據(jù)為00,0并且接收到的數(shù)據(jù)位為0,則認(rèn)為是有效數(shù)據(jù)。如果三個采樣數(shù)據(jù)為11,1并且接收到的數(shù)據(jù)位為1,也認(rèn)為是有效數(shù)據(jù)。其他情況都認(rèn)為是噪聲。當(dāng)在接收幀中檢測到噪聲時:在 位的上升沿設(shè)置標(biāo)志。無效數(shù)據(jù)從移位寄存器傳送到 寄存器。在單個字節(jié)通信情況下,沒有中斷產(chǎn)生。然而,因為標(biāo)志位和標(biāo)志位是同時被設(shè)置, 將產(chǎn)生中斷。在多緩沖器通信情況下,如果已經(jīng)設(shè)置了 寄存器中 位,將產(chǎn)生一個中斷。順序執(zhí)行對 和 寄存器的讀操作,可復(fù)位位。編輯幀錯誤當(dāng)以下情況發(fā)生時檢測到幀錯誤:由于沒有同步上或大量噪音的原因,停止位沒有在預(yù)期的時間內(nèi)識別出來。當(dāng)幀錯誤被檢測到時:位被硬件置起無效數(shù)據(jù)從移位寄存器傳送到 寄存器。在單字節(jié)通信時,沒有中斷產(chǎn)生。然而,這個位和 位同時置起,后者將產(chǎn)生中斷。在多緩沖器通信情況下,如果 寄存器中位被置位的話,將產(chǎn)生中斷。順序執(zhí)行對 和 寄存器的讀操作,可復(fù)位位。編輯校驗錯誤如果 中的校驗控制使能位 E發(fā)送時,寫進(jìn)數(shù)據(jù)寄存器的數(shù)據(jù)的位被校驗位替換后發(fā)送出去 ,選擇偶校驗偶數(shù)個'1; ,選擇奇校驗奇數(shù)個’1)接收時,如果奇偶校驗失敗, 寄存器中的標(biāo)志被置’1,如果 寄存器的 E則中斷產(chǎn)生。

中斷編輯中斷表中斷請求(interrupteveniEvtntflagEnableControlbitTransmitdataregisteremptyTKEtxeTeCTSHagCTSCTSIETransmissioncompleteTCTCIEReceiveddatareadytobereadRXNERXMEIEOverrunerrorcfetectedOHEIdlmlinodetectedIDLEIDLEIEParityerrorPEPElEBreakflagLBDLBDIENoiseflag,OverrunerrorandFramingeriorinmultibuHercommunicationNEorOREorFE(啟》1.Thisbitisusadonly火』曰』由他fwcaptianspertotmedbyD,M.的各種中斷事件被連接到同一個中斷向量見下圖,有以下各種中斷事件:發(fā)送期間:發(fā)送完成、清除發(fā)送 、發(fā)送數(shù)據(jù)寄存器空 X接收期間:空閑總線檢測 、溢出錯誤、接收數(shù)據(jù)寄存器非空、校驗錯誤、斷開符號檢測、噪音錯誤 僅在多緩沖器通信和幀錯誤 僅在多緩沖器通信。如果設(shè)置了對應(yīng)的使能控制位,這些事件就可以產(chǎn)生各自的中斷。圖中斷映射圖

編輯 初始化結(jié)構(gòu)類型定義文件中波特率字長數(shù)據(jù)位數(shù)停止位校驗方式收發(fā)模式硬件流控制用于配置用于配置位用于配置用于配置位用于配置位用于配置位編輯庫函數(shù)文件此處介紹的庫函數(shù)只是一些比較常用的,詳見文件編輯函數(shù)功能描述將外設(shè) 寄存器重設(shè)為缺省值輸入?yún)?shù) :選擇或外設(shè)可以是下列值之一:或返回值無檢查輸入?yún)?shù)強(qiáng)制或者釋放外設(shè)復(fù)位強(qiáng)制或者釋放外設(shè)復(fù)位編輯函數(shù)功能描述根據(jù)功能描述根據(jù)輸入?yún)?shù) :選擇//可以是下列值之一:// US//輸入?yún)?shù)USART了外設(shè) 的配置信息//返回值無中指定的參數(shù)初始化外設(shè) 寄存器或外設(shè)或指向結(jié)構(gòu) 的指針,包含檢查輸入?yún)?shù)硬件流控制只對 和有效 配-置 */preg=USARTx->CR2;清除preg&=CR2_STOP_CLEAR_Mas配置 停止位,時鐘,時鐘極性,時鐘相位和最后一位 */根據(jù) 設(shè)置preg|=(uint32_t)USART_In寫USARTCR2*/ARTx->CR2=(uint16_t)tmpr 配-置 */preg=USARTx->CR1;清除 和preg&=CR1_CLEAR_Mask;配置 字長,校驗和模式根據(jù) 設(shè)置根據(jù) 設(shè)置和根據(jù)設(shè)置和根據(jù)寫USARTCR1*/ARTx->CR1=(uint16_t 配-置- */preg=USARTx->CR3;清除和preg&=CR3_CLEAR_Mas配置硬件流控制根據(jù) 設(shè)置和preg|=USART_InitStr寫USARTCR3*/ARTx->CR3=(uint16_t 配-置- */配置波特率整數(shù)部分*/((USARTx->CR1&CR1_OVE/*在過采樣模式為8次采樣下的整數(shù)部分的計算integerdivider=((25se/*if((USARTx->CR1&/*在過采樣模式為16次采樣下的整數(shù)部分的計算編輯函數(shù)小數(shù)部分停停功能描述把停停輸入?yún)?shù)始化停停返回值無中的每一個參數(shù)按缺省值填入:指向結(jié)構(gòu)的指針,待初長8位成員缺省值波特率停止位不校驗收發(fā)模式?jīng)]有硬件流控制編輯函數(shù)外設(shè)或外設(shè)外設(shè)或外設(shè)或的新狀態(tài)輸入?yún)?shù):選擇可以是下列值之一:USA輸入?yún)?shù) :外設(shè)可以是: 或返回值無檢查輸入?yún)?shù)通過設(shè)置 中的使能選擇的通過設(shè)置 中的失能選擇的編輯函數(shù)功能描述使能或失能指定的 中斷輸入?yún)?shù) :選擇或外設(shè)可以是下列值之一:輸入?yún)?shù) R待使能或者失能的 中斷源可以是下列值之一:: 變化中斷 和不可用: 斷開檢測中斷: 發(fā)送數(shù)據(jù)寄存器空中斷: 發(fā)送完成中斷U 接收數(shù)據(jù)寄存器非空中斷: 空閑幀檢測中斷: 校驗錯誤中斷: 錯誤中斷幀錯誤R噪聲錯誤,上溢錯誤輸入?yún)?shù) S外設(shè) 的新狀態(tài)可以是: 或返回值無檢*查輸入?yún)?shù)中斷對和 是無效的獲得 寄存器索引sartreg=獲*得中斷位置*/在中的中斷編輯函數(shù)功能描述通過外設(shè) 發(fā)送單個數(shù)據(jù)輸入?yún)?shù) :選擇或外設(shè)可以是下列值之一:或輸入?yún)?shù) :待發(fā)送的數(shù)據(jù)返回值無檢*查輸入?yún)?shù)發(fā)*送數(shù)據(jù)編輯函數(shù)功能描述返回最近接收到的數(shù)據(jù)輸入?yún)?shù):選擇或外設(shè)

可以是下列值之一:返回值接收到的數(shù)據(jù)nt16_tUSA/檢*查輸入?yún)?shù)*/assert_par/接*收數(shù)據(jù)*/編輯函數(shù)功能描述檢查指定的標(biāo)志位設(shè)置與否功能描述檢查指定的標(biāo)志位設(shè)置與否輸入?yún)?shù) :選擇或外設(shè)可以是下列值之一:, R , 或輸入?yún)?shù) :待檢查的 標(biāo)志位可以是下列值之一:不可用: 變化標(biāo)志 和不可用: 斷開檢測標(biāo)志: 發(fā)送數(shù)據(jù)寄存器空標(biāo)志: 發(fā)送完成標(biāo)志: 接收數(shù)據(jù)寄存器非空標(biāo)志: 空閑幀檢測標(biāo)志: 上溢錯誤標(biāo)志: 噪聲錯誤標(biāo)志: 幀錯誤標(biāo)志: 校驗錯誤標(biāo)志返回值 的新狀態(tài)(或者)檢*查輸入?yún)?shù)WordWord資料標(biāo)志對 和 是無效的標(biāo)志對 和 是無效的WordWord資料編輯函數(shù)功能描述清除 的掛起標(biāo)志輸入?yún)?shù) :選擇或外設(shè)可以是下列值之一:, R , 或輸入?yún)?shù) :待清除的 標(biāo)志可以是下列值的任意組合:: 變化標(biāo)志 和不可用: 斷開檢測標(biāo)志: 發(fā)送完成標(biāo)志: 接收數(shù)據(jù)寄存器非空標(biāo)志注意校驗錯誤( 幀錯誤)噪聲錯誤)上溢錯誤和空閑幀檢測標(biāo)志通過軟件時序被清除:一個對 寄存器的讀操作后跟一個對 寄存器的讀操作標(biāo)志也可以通過讀 寄存器被清除e標(biāo)志也可以通過軟件時序被清除:一個對 寄存器的讀操作后跟一個對 寄存器的寫操作 。標(biāo)志只能通過寫 寄存器被清除返回值無

檢*查輸入?yún)?shù)標(biāo)志對和 是無效的編輯函數(shù)功能描述檢查指定的 中斷發(fā)生與否輸入?yún)?shù) :選擇或外設(shè)可以是下列值之一:, R , 或輸入?yún)?shù) :待檢查的 中斷源:不的可5:不的可5用: 變化中斷 和: 斷開檢測中斷: 發(fā)送數(shù)據(jù)寄存器空中斷: 發(fā)送完成中斷:接收數(shù)據(jù)寄存器非空中斷: 空閑幀檢測中斷: 上溢錯誤中斷: 噪聲錯誤中斷: 幀錯誤中斷: 校驗錯誤中斷返回值 的新狀態(tài)(或者)檢*查輸入?yún)?shù)中斷對 和 是無效的中斷對 和 是無效的WordWord資料獲得寄存器索引sartreg=獲*得中斷位置*/在中的中斷編輯函數(shù)WordWord資料功能描述清除 的中斷掛起位輸入?yún)?shù) A選擇或外設(shè)可以是下列值之一:, R R 或輸入?yún)?shù) :待清除的 中斷掛起位可以是下列值之一:: 變化中斷 和不可用: 斷開檢測中斷: 發(fā)送完成中斷T接收數(shù)據(jù)寄存器非空中斷注意校

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論