



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、STM32學(xué)習(xí)之串口USARTSTM32 的串口是相當(dāng)豐富的。最多可提供5路串口,有分?jǐn)?shù)波特率發(fā)生器、支持單線光通信和半雙工單線通訊、支持LIN、智能卡協(xié)議和IrDA SIR ENDEC 規(guī)范(僅串口3 支持)、具有DMA 等。串口最基本的設(shè)置,就是波特率的設(shè)置。STM32 的串口使用起來還是蠻簡單的,只要你開啟了串口時鐘,并設(shè)置相應(yīng) IO口的模式,然后配置一下波特率,數(shù)據(jù)位長度,奇偶校驗位等信息,就可以使用了。1、串口時鐘使能。串口作為STM32 的一個外設(shè),其時鐘由外設(shè)始終使能寄存器控制,這里我們使用的串口1是在APB2ENR 寄存器的第 14 位。除了串口 1 的時鐘使能在APB2ENR
2、寄存器,其他串口的時鐘使能位都在APB1ENR。1、串口的作用:用在STM32板子和PC機(jī)通信的。我們調(diào)試的時候,無法知道是否正確,就可以用STM32的cpu,給串口輸出一些信息給PC,我們通過屏幕(實際上是終端串口軟件),可以看到這些信息,從而知道當(dāng)前程序的錯誤可能出現(xiàn)的位置。當(dāng)然,也可以在PC的鍵盤敲打命令,讓串口幫傳遞給STM32板子,來執(zhí)行這些命令。2、串口的工作模式一般有兩種方式:查詢和中斷(1)查詢:串口程序不斷地循環(huán)查詢,看看當(dāng)前有沒有數(shù)據(jù)要它傳,如果有,就幫助傳送(可以從PC到STM32板子,也可以從STM32 板子到PC)。 (2)中斷:平時串口只要打開中斷即可。如果發(fā)現(xiàn)有一
3、個中斷來,則意味著要它幫助傳輸數(shù)據(jù)它就馬上進(jìn)行數(shù)據(jù)的傳送。同樣,可以從PC到STM32板子,也可以從STM32板子到PC 。步驟一 從硬件開始學(xué)習(xí)。大家先打開芯達(dá)STM32開發(fā)板附帶的原理圖。找到串口部分。筆者把它截圖如下。我們發(fā)現(xiàn),串口模塊的電路是這樣的:STM32的CPU引腳,通過兩個PA端口的引腳PA10和PA9(此兩個引腳復(fù)用USART),連接到一個SP3232芯片,或者M(jìn)AX232芯片。然后再連接到DB9串口座上。由于232芯片可以允許走兩路信號,因此,我們擴(kuò)展了一個串口COM2,請注意,如無特別說明,我們都將使用COM1。 SP3232EEN芯片能幫助把數(shù)據(jù)信號轉(zhuǎn)換成電腦232接口
4、能識別的信號。其轉(zhuǎn)換是自動進(jìn)行的。因此,我們只需要把要發(fā)送的數(shù)據(jù)送給引腳PA9,然后再串口座的引腳3上去接收數(shù)據(jù)即可。反之,接收數(shù)據(jù)也是一樣。步驟二 初始化串口。 打開STM32F103xxx參考手冊與STM32固件庫使用手冊。我們的思路和之前一樣,根據(jù)固件庫使用手冊中給出的步驟來配置串口。1、要聲明一個結(jié)構(gòu): GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDefUSART_InitStructure; 這里順便也聲明了GPIO的結(jié)構(gòu)。原因是:串口是需要使用IO口來進(jìn)行發(fā)送和接收的。 2、設(shè)置該結(jié)構(gòu)中的成員: 串口的結(jié)構(gòu)成員設(shè)置如下: U
5、SART_StructInit(&USART_InitStructure); USART_InitStructure.USART_BaudRate=115200;USART_InitStructure.USART_WordLength=USART_WordLength_8b; USART_InitStructure.USART_StopBits=USART_StopBits_1; USART_InitStructure.USART_Parity=USART_Parity_No; USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mod
6、e_Tx; USART_InitStructure.USART_HardwareFlowControl =USART_HardwareFlowControl_None; GPIO結(jié)構(gòu)的成員設(shè)置如下: GPIO_StructInit(&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GP
7、IO_Pin_10; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA,&GPIO_InitStructure);3、調(diào)用函數(shù)x xx_Init()來初始化外設(shè)(包括IO和USART):USART的初始化函:USART_Init(USART1,&USART_InitStructure); 由于GPIO的外設(shè)初始化已經(jīng)放在成員設(shè)置后面,因此這里沒有列出來。4、調(diào)用xxx_Cmd(xxx,ENABLE);函數(shù)來使能外設(shè)。 這里只需要使能USART即可。GPIO的固件中,沒有使能即可使用。USART
8、_Cmd(USART1,ENABLE);由于本文檔使用的是中斷方式來觸發(fā)串口收發(fā)數(shù)據(jù),因此,我們在使能串口之前,也把發(fā)送和接收的中斷使能打開: USART_ITConfig(USART1,USART_IT_RXNE,ENABLE); USART_ITConfig(USART1,USART_IT_TXE,ENABLE);5、別忘了加上外設(shè)的時鐘使能哈 GPIOA和USART都在APB2上。因此我們調(diào)用的函數(shù)如下: RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_A
9、PB2Periph_GPIOC|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE,ENABLE);步驟三 操作串口收發(fā)數(shù)據(jù) 芯達(dá)STM32的思路是:首先讓STM32的CPU發(fā)送一些歡迎信息,從串口打印出來。然后接收中斷,該中斷來自鍵盤輸入。只要鍵盤輸入一個字符,即打印出該字符,從而驗證串口編程是否成功。固件庫的函數(shù)如何讓串口發(fā)送和接收數(shù)據(jù)呢?它給我們提供了兩個函數(shù):USART_SendData(); 省略函數(shù)參數(shù) USART_ReceiveData(); 先來看發(fā)送。我們的程序在初始化串口之后,馬上就會打印歡迎信息。也就是從STM32的CPU發(fā)送信息,在電腦屏
10、幕上顯示出來,只要如下操作即可:/*=USART打印歡迎信息=*/ for(i=0;TxBuf1i!='0'i+) USART_SendData(USART1,TxBuf1i); while(USART_GetFlagStatus(USART1,USART_FLAG_TC)=RESET); TxBuf1是一個發(fā)送緩存。我們事先把數(shù)據(jù)放在這個數(shù)組里了: unsignedcharTxBuf1100="這里可以自定義需要輸出到串口的字符" 這里要注意的是,當(dāng)我們發(fā)送一個字符后,必須查看狀態(tài)標(biāo)志,這里是發(fā)送是否完成的標(biāo)志:USART_FLAG_TC,如果發(fā)送完成了,
11、則才可以發(fā)送下一個數(shù)據(jù)。函數(shù)USART_GetFlagStatus();就是用來做這個判斷的。下面開始另外一個操作:鍵盤輸入什么字符,就得顯示什么字符。我們的代碼如下: while(1) GPIO_SetBits(GPIOE,GPIO_Pin_1); RX_status=USART_GetFlagStatus(USART1,USART_FLAG_RXNE); if(RX_status=SET) USART_SendData(USART1,USART_ReceiveData(USART1); while(USART_GetFlagStatus(USART1,USART_FLAG_TC)=RESET); GPIO_ResetBits(GPIOE,GPIO_Pin_1); Delay(0xFFFFF); 先判斷接收的狀態(tài)標(biāo)志USART_FLAG_RXNE,如果接收的寄存器非 空,說明已經(jīng)接收到鍵盤發(fā)送來的數(shù)據(jù),于是就把這個數(shù)據(jù)從接收緩存中取出來,發(fā)送給電腦。這樣電腦就可以看到剛才敲入的字符了。 USART_ReceiveData(USART1);這個函數(shù)是從接收緩存取出數(shù)據(jù)。 我們在這個while中,還加入了GPIO
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 語文-陜西省安康市2025屆高三下學(xué)期第二次質(zhì)量聯(lián)考(安康二模)試題和答案
- 臨漳門樓施工方案
- 樓頂裝修電梯施工方案
- 2025年北京平谷區(qū)高三一模數(shù)學(xué)試題答案詳解
- boot項目合同范本
- 公益林合同范例
- 建立行業(yè)合作提升競爭力計劃
- 急診護(hù)理質(zhì)量提升行動計劃
- 基礎(chǔ)心理學(xué)知識培訓(xùn)課件
- 學(xué)校班主任的性別教育引導(dǎo)策略計劃
- 2025年湖南水利水電職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫參考答案
- (部編版2025新教材)道德與法治一年級下冊-第1課《有個新目標(biāo)》課件
- 臨床基于高級健康評估的高血壓Ⅲ級合并腦梗死患者康復(fù)個案護(hù)理
- T∕ACSC 01-2022 輔助生殖醫(yī)學(xué)中心建設(shè)標(biāo)準(zhǔn)(高清最新版)
- 巡檢記錄表模板
- comsol學(xué)生操作手冊4函數(shù)定義用戶指南
- 出口退稅手冊核銷操作步驟
- 潘通色卡TCX棉布色彩電子版查詢部分
- 第三章社科信息檢索原理與技術(shù)PPT課件
- 《當(dāng)代廣播電視概論》試題A卷及答案
- DELL-PS系列存儲安裝手冊
評論
0/150
提交評論