嵌入式實(shí)驗(yàn)四_第1頁
嵌入式實(shí)驗(yàn)四_第2頁
嵌入式實(shí)驗(yàn)四_第3頁
嵌入式實(shí)驗(yàn)四_第4頁
嵌入式實(shí)驗(yàn)四_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、陜 西 科 技 大 學(xué) 實(shí) 驗(yàn) 報(bào) 告 班級 電信121 學(xué)號 0 姓名 尹航 實(shí)驗(yàn)組別 實(shí)驗(yàn)日期 室溫 報(bào)告日期 成績 報(bào)告內(nèi)容:(目的和要求、原理、步驟、數(shù)據(jù)、計(jì)算、小結(jié)等) 實(shí)驗(yàn)名稱:實(shí)驗(yàn)四 串口通信實(shí)驗(yàn) 實(shí)驗(yàn)?zāi)康模海?)掌握STM32串口通訊原理;(2)掌握STM32串口編程;(3)掌握STM32單片機(jī)串口中斷原理。 實(shí)驗(yàn)設(shè)備:(1)硬件設(shè)備 超高頻實(shí)驗(yàn)板一塊; J-LINK仿真器一套 PC機(jī)一臺。 USB專用連接線一條(2)軟件工具 STM32編譯環(huán)境:KEIL4 串口測試軟件:ComMonitor.exe實(shí)驗(yàn)內(nèi)容:(1)按照串口設(shè)置對串口進(jìn)行相應(yīng)的設(shè)置;(2)運(yùn)用相關(guān)函數(shù)編寫程序進(jìn)

2、行調(diào)試;(3)編寫不同的函數(shù),包括中斷函數(shù),初始化程序,GPIO端口模式設(shè)置進(jìn)行試驗(yàn);(4)使用使用STM32的串口來發(fā)送和接收數(shù)據(jù)。STM32通過串口和上位機(jī)的對話,STM32在收到上位機(jī)發(fā)過來的字符串后,原原本本的返回給上位機(jī)。實(shí)驗(yàn)原理: 本實(shí)驗(yàn)介紹STM32 的串口基礎(chǔ),用 STM32 的串口來發(fā)送和接收數(shù)據(jù)。 本實(shí)驗(yàn)將實(shí)現(xiàn)如下功能: STM32 通過串口和上位機(jī)的對話,STM32 在收到上位機(jī)發(fā)過來的字符串后,原原本本的返回給上位機(jī)。STM32 串口簡介串口作為 MCU 的重要外部接口,同時(shí)也是軟件開發(fā)重要的調(diào)試手段, 其重要性不言而喻?,F(xiàn)在基本上所有的 MCU 都會帶有串口,STM3

3、2 自然也不例外。STM32 的串口資源相當(dāng)豐富的,功能也相當(dāng)強(qiáng)勁。本實(shí)驗(yàn)主要從庫函數(shù)操作層面結(jié)合寄存器的描述,告訴大家如何設(shè)置串口,以達(dá)到最基本的通信功能。本實(shí)驗(yàn)將實(shí)現(xiàn)利用串口 4 不停的打印信息到電腦上,同時(shí)接收從串口發(fā)過來的數(shù)據(jù),把發(fā)送過來的數(shù)據(jù)直接送回給電腦。超高頻開發(fā)板自帶 1 個(gè) USB 串口。串口設(shè)置的一般步驟可以總結(jié)為如下幾個(gè)步驟:1) 串口時(shí)鐘使能,GPIO 時(shí)鐘使能2) 串口復(fù)位3) GPIO 端口模式設(shè)置4) 串口參數(shù)初始化5) 開啟中斷并且初始化 NVIC(如果需要開啟中斷才需要這個(gè)步驟)6) 使能串口7) 編寫中斷處理函數(shù)實(shí)驗(yàn)步驟:(1)打開Template工程模板文

4、件工程Template.UV2,打開 SYSTEM usart.c,工程出廠默認(rèn)是串口1,由于本實(shí)驗(yàn)使用串口4.因此需加入串口4的相關(guān)程序(2)程序內(nèi)部STM32RET6串口1、2、3使用沒區(qū)別,串口4、5區(qū)別與前3個(gè)不同之處有兩點(diǎn)串口1、2、3端口號使用USARTn,串口4、5端口號UARTn串口1、2、3是掛載在 APB2 下面的外設(shè),串口4、5是掛載在 APB1 下面的外設(shè)。 因此使用串口4只需將程序中的USART1替換為UART4,串口使能語句改寫為: RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4,ENABLE); RCC_APB2Periph

5、ClockCmd(RCC_APB2Periph_GPIOC,ENABLE);其余保持不變。按如下步驟改寫usart.c程序;(3)打開main.c,在 main.c 里面編寫代碼:(4)添加文件夾HARDWARE下的led.c,再按照以上幾個(gè)實(shí)驗(yàn)方法添加文件夾HARDWARE下的led.h, 后編譯工程。(5)下載程序編譯完成后,將J-LINK仿真器USB線一邊接PC機(jī),16芯扁平線一端接超高頻實(shí)驗(yàn)板對應(yīng)插口,然后按下實(shí)驗(yàn)板電源按鈕,再下載程序,得到如下圖所示結(jié)果,表示下載完成。(6)下載完成后,關(guān)閉實(shí)驗(yàn)板電源。將超高頻實(shí)驗(yàn)板跳線按單片機(jī)和上位機(jī)連接圖4-1-3連接(即超高頻實(shí)驗(yàn)板右邊兩個(gè)短接

6、)。(7)用USB線連接超高頻實(shí)驗(yàn)板和PC機(jī),打開實(shí)驗(yàn)板電源打開串口測試軟件ComMonitor.exe,按門禁系統(tǒng)錄入卡號步驟設(shè)置好相應(yīng)的串口。實(shí)驗(yàn)代碼:串口通信實(shí)驗(yàn)程序:先介紹 uart_init 函數(shù),該函數(shù)代碼如下: /初始化 IO 串口 1 /bound:波特率 void uart_init(u32 bound) GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; /串口時(shí)鐘使能,GPIO 時(shí)鐘使能,復(fù)用時(shí)鐘使能

7、 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1| RCC_APB2Periph_GPIOA, ENABLE); /使能 USART1,GPIOA 時(shí)鐘 /串口復(fù)位 USART_DeInit(USART1); /復(fù)位串口 1 /GPIO 端口模式設(shè)置 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; /ISART1_TX PA.9 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_P

8、P; /復(fù)用推挽輸出 GPIO_Init(GPIOA, &GPIO_InitStructure); /初始化 GPIOA.9 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; /USART1_RX PA.10 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; /浮空輸入 GPIO_Init(GPIOA, &GPIO_InitStructure); /初始化 GPIOA.10 /串口參數(shù)初始化 USART_InitStructure.USART_BaudRate = bound; /波特率設(shè)置 USAR

9、T_InitStructure.USART_WordLength = USART_WordLength_8b; /字長為 8 位 USART_InitStructure.USART_StopBits = USART_StopBits_1; /一個(gè)停止位 USART_InitStructure.USART_Parity = USART_Parity_No; /無奇偶校驗(yàn)位 USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; /無硬件數(shù)據(jù)流控制 USART_InitStructure.USA

10、RT_Mode = USART_Mode_Rx | USART_Mode_Tx;/收發(fā)模式 USART_Init(USART1, &USART_InitStructure); /初始化串口 #if EN_USART1_RX /如果使能了接收 /初始化 NVIC NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ; /搶占優(yōu)先級 3 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; /子

11、優(yōu)先級 3 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; /IRQ 通道使能 NVIC_Init(&NVIC_InitStructure); /中斷優(yōu)先級初始化 /開啟中斷 USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); /開啟中斷 #endif /使能串口 USART_Cmd(USART1, ENABLE); /使能串口 在 main.c 里面編寫如下代碼: #include led.h #include delay.h #include key.h #include sys.h #include

12、 usart.h int main(void) u8 t; u8 len; u16 times=0; delay_init(); /延時(shí)函數(shù)初始化 NVIC_Configuration(); /設(shè)置 NVIC 中斷分組 2 uart_init(9600); /串口初始化波特率為 9600 LED_Init(); /LED 端口初始化 KEY_Init(); /初始化與按鍵連接的硬件接口 while(1) if(USART_RX_STA&0x8000) len=USART_RX_STA&0x3f; /得到此次接收到的數(shù)據(jù)長度 printf(rn 您發(fā)送的消息為:rnrn); for(t=0;tlen;t+) USART_SendData(USART1, USART_RX_BUFt); /向串口 1 發(fā)送數(shù)據(jù) while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET); /等待發(fā)送結(jié)束 printf(rnrn); /插入換行 USART_RX_STA=0; else times+; if(times%5000=0) printf(rn 戰(zhàn)艦 STM32 開發(fā)板 串口實(shí)驗(yàn)rn); printf(正點(diǎn)原子ALIENTEKrnrn); if(times%200=0)printf(請輸入數(shù)據(jù),以回車鍵結(jié)束n); if(times%30=

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論