面向物聯(lián)網(wǎng)的嵌入式系統(tǒng)開發(fā)21STM32串口通信技術(shù)應(yīng)用開發(fā)課件_第1頁
面向物聯(lián)網(wǎng)的嵌入式系統(tǒng)開發(fā)21STM32串口通信技術(shù)應(yīng)用開發(fā)課件_第2頁
面向物聯(lián)網(wǎng)的嵌入式系統(tǒng)開發(fā)21STM32串口通信技術(shù)應(yīng)用開發(fā)課件_第3頁
面向物聯(lián)網(wǎng)的嵌入式系統(tǒng)開發(fā)21STM32串口通信技術(shù)應(yīng)用開發(fā)課件_第4頁
面向物聯(lián)網(wǎng)的嵌入式系統(tǒng)開發(fā)21STM32串口通信技術(shù)應(yīng)用開發(fā)課件_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、CC2530和STM32嵌入式接口技術(shù)開發(fā)5.7 STM32串口通信技術(shù)應(yīng)用開發(fā)串口介紹STM32的USARTSTM32串口庫函數(shù)的使用項目實踐串口通信協(xié)議串口通信(Serial Communications)的概念非常簡單,串口按位(bit)發(fā)送和接收字節(jié)。典型地,串口用于ASCII碼字符的傳輸。通信使用3根線完成,分別是地線、發(fā)送、接收。由于串口通信是異步的,端口能夠在一根線上發(fā)送數(shù)據(jù)同時在另一根線上接收數(shù)據(jù)。STM32的串口介紹STM32芯片具有多個 USART 外設(shè)用于串口通訊,它是 Universal SynchronousAsynchronous Receiver and Tran

2、smitter的縮寫,即通用同步異步收發(fā)器可以靈活地與外部設(shè)備進行全雙工數(shù)據(jù)交換。USART串口的原理1. 串口通用功能引腳TXD:發(fā)送引腳RXD:接收引腳2. 串口的數(shù)據(jù)收發(fā)寄存器數(shù)據(jù)接收與發(fā)送寄存器相互獨立,可以實現(xiàn)同步數(shù)據(jù)收發(fā)。3. 串口數(shù)據(jù)收發(fā)控制器控制串口的數(shù)據(jù)發(fā)送、接收、喚醒、中斷控制等等。4. 波特率生成器對數(shù)據(jù)發(fā)送和接收的波特率進行控制。STM32F4xx系類串口位置STM32芯片的串口眾多,根據(jù)掛載在不同時鐘總線上的串口可分為高速串口和一般串口,又由于控制器的不同可分為同步串口和異步串口。USART串口外部中斷請求中斷事件事件標志使能控制位發(fā)送數(shù)據(jù)寄存器為空 TXE TXEI

3、ECTS 標志CTSCTSIE發(fā)送完成TCTCIE準備好讀取接收到的數(shù)據(jù)RXNERXNEIE檢測到上溢錯誤ORE檢測到空閑線路 IDLE IDLEIE奇偶校驗錯誤PEPEIE斷路標志LBDLBDIE多緩沖通信中的噪聲標志、上溢錯誤和幀錯誤NF/ORE/FEEIE串口是一種常用的通訊手段,當數(shù)據(jù)量較大是就會遇到各種各樣的問題,因此對各種問題也要有一定的中斷處理機制。串口配置流程1. 使能端口和時鐘RCC_AHB1PeriphClockCmd(DEBUG_USART_RX_GPIO_CLK|DEBUG_USART_TX_GPIO_CLK,ENABLE);GPIO_Init(DEBUG_USART_

4、RX_GPIO_PORT, &GPIO_InitStructure);2. 配置端口復(fù)用GPIO_PinAFConfig(DEBUG_USART_RX_GPIO_PORT,DEBUG_USART_RX_SOURCE,DEBUG_USART_RX_AF);GPIO_PinAFConfig(DEBUG_USART_TX_GPIO_PORT,DEBUG_USART_TX_SOURCE,DEBUG_USART_TX_AF);3. 初始化串口相關(guān)參數(shù)USART_Init(DEBUG_USART, &USART_InitStructure);4. 使能串口USART_Cmd(DEBUG_USART, EN

5、ABLE);STM32串口庫精簡度很高,配置較為簡單,只需配置時鐘、復(fù)用、串口參數(shù)即可。串口初始化參數(shù)typedef struct uint32_t USART_BaudRate; / 波特率波特率越高數(shù)據(jù)傳輸速率越快,但傳輸距離越短uint16_t USART_WordLength; / 字長用于配置數(shù)據(jù)長度,字長通常有5位、6位、7位和8位等uint16_t USART_StopBits; / 停止位作為一條信息的結(jié)束位,有1位和2位兩種情況uint16_t USART_Parity; / 校驗位校驗數(shù)據(jù)在發(fā)送過程中是否出錯uint16_t USART_Mode; / USART 模式用于

6、確認串口的收發(fā)模式uint16_t USART_HardwareFlowControl; / 硬件流控制,通常不配置不使能 USART_InitTypeDef; /串口配置結(jié)構(gòu)體串口配置主要需要注意三個參數(shù),波特率、數(shù)據(jù)長度、停止位和校驗位即可,在使用串口時另一個串口接口要于此保持一致。項目場景串口是工業(yè)主板上一種非常通用設(shè)備通信的協(xié)議,大多數(shù)工業(yè)主板包含兩個以上基于RS-232的串口。串口是按位(bit)發(fā)送和接收字節(jié),速度要比按字節(jié)(byte)的并行通信慢,但串口可以在使用一根線發(fā)送數(shù)據(jù)的同時用另一根線接收數(shù)據(jù),能夠簡單實現(xiàn)遠距離通信。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗

7、。任務(wù)目標使用STM32處理器模擬設(shè)備與中央控制臺間的數(shù)據(jù)交互。STM32與PC及通過串口相連,通過PC機上機向STM32處理器發(fā)送數(shù)據(jù)。STM32處理器接受到數(shù)據(jù)后回顯,STM32處理器當通過串口接受到了特定的字符時向PC機打印接受到的所有數(shù)據(jù),以此實現(xiàn)STM32處理器與PC機的交互。項目分析STM32F407的函數(shù)庫接口十分精簡,串口的配置也同樣如此。通常STM32F407的的結(jié)構(gòu)體配置主要注意幾個參數(shù)即可,即波特率、數(shù)據(jù)位、校驗位和停止位。在使用串口是需要配置相關(guān)的PC端的串口上位機,配置上位機時要注意配置的串口參數(shù)要與芯片本身配置的串口參數(shù)一致。項目程序邏輯框圖程序開始執(zhí)行時首先初始化

8、LED,延時一段時間后初始化串口,同時串口打印相關(guān)的實驗內(nèi)容,信息打印完成后設(shè)置LED初始狀態(tài)為熄滅。然后程序進入主循環(huán),在主循環(huán)中程序不斷等待收據(jù)接收,接收到數(shù)據(jù)后將數(shù)據(jù)從新發(fā)送到PC。數(shù)據(jù)在接收過程中LED3、4閃爍。項目實現(xiàn)void usart_init(unsigned int bound) /GPIO端口設(shè)置 GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_AHB1PeriphClockCmd(RCC

9、_AHB1Periph_GPIOA,ENABLE); /使能GPIOA時鐘 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); /使能USART1時鐘 /串口1對應(yīng)引腳復(fù)用映射 GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1); /GPIOA9復(fù)用為USART1 GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1); /GPIOA10復(fù)用為USART1 usart1初始化項目實現(xiàn) /USART1端口配置 GPIO_Init

10、Structure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; /GPIOA9與GPIOA10 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; /復(fù)用功能 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /速度50MHz GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; /推挽復(fù)用輸出 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; /上拉 GPIO_Init(GPIOA,&GPIO_I

11、nitStructure); /初始化PA9,PA10 /USART1 初始化設(shè)置 USART_InitStructure.USART_BaudRate = bound; /波特率設(shè)置 USART_InitStructure.USART_WordLength = USART_WordLength_8b; /字長為8位數(shù)據(jù)格式 USART_InitStructure.USART_StopBits = USART_StopBits_1; /一個停止位 USART_InitStructure.USART_Parity = USART_Parity_No; /無奇偶校驗位 USART_InitStru

12、cture.USART_HardwareFlowControl = USART_HardwareFlowControl_None; /無硬件數(shù)據(jù)流控制usart1初始化項目實現(xiàn) /收發(fā)模式 USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, &USART_InitStructure); /根據(jù)上述配置初始化串口1 /Usart1 NVIC 配置 NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; /串口1中斷通道 NVIC_InitS

13、tructure.NVIC_IRQChannelPreemptionPriority=0; /搶占優(yōu)先級0 NVIC_InitStructure.NVIC_IRQChannelSubPriority =1; /子優(yōu)先級1 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; /IRQ通道使能 NVIC_Init(&NVIC_InitStructure); /根據(jù)指定的參數(shù)初始化VIC寄存器、 USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); /開啟串口1接收中斷 USART_Cmd(USART1, ENABL

14、E); /使能串口1 usart1初始化項目實現(xiàn)void USART1_IRQHandler(void) if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) /如果收到數(shù)據(jù)(接收中斷) USART_ClearFlag(USART1, USART_IT_RXNE); /清除接收中斷標志 if(Usart_len USART_REC_MAX) USART_RX_BUFUsart_len+ = USART_ReceiveData(USART1); /將數(shù)據(jù)放入接收緩沖區(qū) 串口中斷處理函數(shù)項目實現(xiàn)void clean_usart(void) memset(USART_RX_BUF,0,Usart_len); Usart_len = 0;清除串口緩沖區(qū)項目實現(xiàn)void usart_send(unsigned

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論