基于STM32Cube的嵌入式系統應用 課件 第8章 STM32通用同步異步收發器_第1頁
基于STM32Cube的嵌入式系統應用 課件 第8章 STM32通用同步異步收發器_第2頁
基于STM32Cube的嵌入式系統應用 課件 第8章 STM32通用同步異步收發器_第3頁
基于STM32Cube的嵌入式系統應用 課件 第8章 STM32通用同步異步收發器_第4頁
基于STM32Cube的嵌入式系統應用 課件 第8章 STM32通用同步異步收發器_第5頁
已閱讀5頁,還剩58頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第8章STM32通用同步/異步收發器本章講述了STM32通用同步異步收發器,包括串行通信基礎、STM32的USART工作原理、USART的HAL驅動程序、采用STM32Cube和HAL庫的USART串行通信應用實例。8.1串行通信基礎在串行通信中,參與通信的兩臺或多臺設備通常共享一條物理通路。發送者依次逐位發送一串數據信號,按一定的約定規則為接收者所接收。由于串行端口通常只是規定了物理層的接口規范,所以為確保每次傳送的數據報文能準確到達目的地,使每一個接收者能夠接收到所有發向它的數據,必須在通信連接上采取相應的措施。8.1.1串行異步通信數據格式無論是RS-232還是RS-485,均可采用通用異步收發數據格式。串行異步收發(UART)通信的數據格式如圖8-1所示。圖8-1串行異步收發(UART)通信的數據格式8.1.2串行同步通信數據格式同步通信是由1~2個同步字符和多字節數據位組成,同步字符作為起始位以觸發同步時鐘開始發送或接收數據;多字節數據之間不允許有空隙,每位占用的時間相等;空閑位需發送同步字符。同步通信傳送的多字節數據由于中間沒有空隙,因而傳輸速度較快,但要求有準確的時鐘來實現收發雙方的嚴格同步,對硬件要求較高,適用于成批數據傳送。串行同步收發通信的數據格式如圖8-2所示。圖8-2串行同步收發通信的數據格式通信是嵌入式系統的重要功能之一嵌入式系統中使用的通信接口有很多,如UART、SPI、I2C、USB和CAN等。其中,UART(UniversalAsynchronousReceiver/Transmitter,通用異步收發器)是最常見、最方便、使用最頻繁的通信接口。在嵌入式系統中,很多微控制器或者外設模塊都帶有UART接口。例如,STM32F407系列微控制器、6軸運動處理組件MPU6050(包括3軸陀螺儀和3軸加速器)、超聲波測距模塊US-100、GPS模塊UBLOX、13.56MHz非接觸式IC卡讀卡模塊RC522等。8.2STM32的USART工作原理它們彼此通過UART相互通信交換數據,但由于UART通信距離較短,一般僅能支持板級通信,因此,通常在UART的基礎上,經過簡單擴展或變換,就可以得到實際生活中常用的各種適于較長距離的串行數據通信接口,如R-S232、RS-485和IrDA等。出于成本和功能兩方面的考慮,目前大多的半導體廠商選擇在微控制器內部集成UART模塊。ST有限公司的STM32F407系列微控制器也不例外,在它內部配備了強大的UART模塊USART(UniversalSynchronous/AsynchronousReceiver/Transmitter,通用同步/異步收發器)。STM32F407的USART模塊不僅具備UART接口的基本功能,而且還支持同步單向通信、LIN(局部互聯網)協議、智能卡協議、IrDASIR編碼/解碼規范、調制解調器(CTS/RTS)操作。8.2.1USART介紹通用同步/異步收發器可以說是嵌入式系統中除了GPIO外最常用的一種外設。USART常用的原因不在于其性能超強,而是因為USART的簡單、通用。USART通信的另一個優勢是可以適應不同的物理層。例如,使用RS-232或RS-485可以明顯提升USART通信的距離,無線FSK調制可以降低布線施工的難度。所以USART口在工控領域也有著廣泛的應用,是串行接口的工業標準(IndustryStandard)。SM32F407微控制器的小容量產品有2個USART,中等容量產品有3個USART,大容量產品有3個USART+2個UART(UniversalAsynchronousReceiver/Transmitter)。8.2.2USART的主要特性USART主要特性如下:(1)全雙工的,異步通信。(2)NRZ標準格式。(3)分數波特率發生器系統。發送和接收共用的可編程波特率,最高達10.5Mb/s。(4)可編程數據字長度(8位或9位)。(5)可配置的停止位-支持1或2個停止位。(6)LIN主發送同步斷開符的能力以及LIN從檢測斷開符的能力。當USART硬件配置成LIN時,生成13位斷開符;檢測10/11位斷開符。(7)發送方為同步傳輸提供時鐘。(8)IRDASIR編碼器解碼器。在正常模式下支持3/16位的持續時間。(9)智能卡模擬功能。智能卡接口支持ISO7816-3標準里定義的異步智能卡協議;智能卡用到0.5和1.5個停止位。(10)單線半雙工通信。(11)可配置的使用DMA的多緩沖器通信。在SRAM里利用集中式DMA緩沖接收/發送字節。(12)單獨的發送器和接收器使能位。(13)檢測標志。接收緩沖器滿;發送緩沖器空;傳輸結束標志。(14)校驗控制。發送校驗位;對接收數據進行校驗。(15)四個錯誤檢測標志。溢出錯誤;噪聲錯誤;幀錯誤;校驗錯誤。(16)10個帶標志的中斷源。CTS改變;LIN斷開符檢測;發送數據寄存器空;發送完成;接收數據寄存器滿;檢測到總線為空閑;溢出錯誤;幀錯誤;噪聲錯誤;校驗錯誤。(17)多處理器通信。如果地址不匹配,則進入靜默模式。(18)從靜默模式中喚醒。通過空閑總線檢測或地址標志檢測。(19)兩種喚醒接收器的方式。地址位(MSB,第9位),總線空閑。8.2.3USART的功能STM32F407微控制器USART接口通過三個引腳與其他設備連接在一起,其內部結構如圖8-3所示。圖8-3USART結構框圖(1)總線在發送或接收前應處于空閑狀態。(2)一個起始位。(3)一個數據字(8或9位),最低有效位在前。(4)0.5,1.5,2個的停止位,由此表明數據幀的結束。(5)使用分數波特率發生器-12位整數和4位小數的表示方法。(6)一個狀態寄存器(USART_SR)。(7)數據寄存器(USART_DR)。(8)一個波特率寄存器(USART_BRR),12位的整數和4位小數。(9)一個智能卡模式下的保護時間寄存器(USART_GTPR)。1.波特率控制波特率控制即圖8-3下部虛線框的部分。通過對USART時鐘的控制,可以控制USART的數據傳輸速度。通過改變USART外設時鐘源的分頻系數USARTDIV,可以設置USART的波特率。波特率決定了USART數據通信的速率,通過設置波特率寄存器(USART_BRR)來配置波特率。標準USART的波特率計算公式:波特率=fPCLK/(8x(2-OVER8)xUSARTDIV)式中,fpcLk是USART總線時鐘;OVER8是過采樣設置;USARTDIV是需要存儲在USART_BRR中的數據。一般根據需要的波特率計算USARTDIV,然后換算成存儲到USART_BRR的數據。2.收發控制收發控制即圖8-3的中間部分。該部分由若干個控制寄存器組成,如USART控制寄存器(controlregister)CR1、CR2、CR3和USART狀態寄存器(statusregister)SR等。通過向以上控制寄存器寫入各種參數,控制USART數據的發送和接收。同時,通過讀取狀態寄存器,可以查詢USART當前的狀態。USART狀態的查詢和控制可以通過庫函數來實現,因此,無須深入了解這些寄存器的具體細節(如各個位代表的意義),而只需學會使用USART相關的庫函數即可。3.數據存儲轉移數據存儲轉移即圖8-3上部灰色的部分。它的核心是兩個移位寄存器:發送移位寄存器和接收移位寄存器。這兩個移位寄存器負責收發數據并做并串轉換。(1)USART數據發送過程當USART發送數據時,內核指令或DMA外設先將數據從內存(變量)寫入發送數據寄存器TDR。然后,發送控制器適時地自動把數據從TDR加載到發送移位寄存器,將數據一位一位地通過Tx引腳發送出去。(2)USART數據接收過程USART數據接收是USART數據發送的逆過程。當USART接收數據時,數據從Rx引腳一位一位地輸入到接收移位寄存器中。然后,接收控制器自動將接收移位寄存器的數據轉移到接收數據寄存器RDR中。最后,內核指令或DMA將接收數據寄存器RDR的數據讀入內存(變量)中。8.2.4USART的通信時序字長可以通過編程USART_CR1寄存器中的M位,選擇8或9位,如圖8-4所示。圖8-4中的LBCL,最后一位時鐘脈沖(Lastbitclockpulse),為控制寄存器2(USART_CR2)的位8。在同步模式下,該位用于控制是否在CK引腳上輸出最后發送的那個數據位(最高位)對應的時鐘脈沖。0:最后一位數據的時鐘脈沖不從CK輸出;1:最后一位數據的時鐘脈沖會從CK輸出。(2)UART4和UART5上不存在這一位。

圖8-4USART通信時序8.2.5USART的中斷STM32F407系列微控制器的USART主要有以下各種中斷事件:(1)發送期間的中斷事件包括發送完成(TC)、清除發送(CTS)、發送數據寄存器空(TXE)。(2)接收期間:空閑總線檢測(IDLE)、溢出錯誤(ORE)、接收數據寄存器非空(RXNE)、校驗錯誤(PE)、LIN斷開檢測(LBD)、噪聲錯誤(NE,僅在多緩沖器通信)和幀錯誤(FE,僅在多緩沖器通信)。如果設置了對應的使能控制位,這些事件就可以產生各自的中斷,如表8-1所示。中斷事件事件標志使能位發送數據寄存器空TXETXEIECTS標志CTSCTSIE發送完成TCTCIE接收數據就緒可讀RXNERXNEIE檢測到數據溢出OREOREIE檢測到空閑線路IDLEIDLEIE奇偶檢驗錯PEPEIE斷開標志LBDLBDIE噪聲標志、溢出錯誤和幀錯誤NE或ORT或FEEIE表8-1STM32F407系列微控制器USART的中斷事件及其使能標志位8.2.6USART的相關寄存器現將STM32F407的USART相關寄存器名稱介紹如下,可以用半字(16位)或字(32位)的方式操作這些外設寄存器,由于采用庫函數方式編程,故不做進一步的探討。(1)狀態寄存器(USART_SR)。(2)數據寄存器(USART_DR)。(3)波特比率寄存器(USART_BRR)。(4)控制寄存器1(USART_CR1)。(5)控制寄存器2(USART_CR2)。(6)控制寄存器3(USART_CR3)。(7)保護時間和預分頻寄存器(USART_GTPR)。8.3.1常用功能函數串口的驅動程序頭文件是stm32f4xx_hal_uart.h。串口操作的常用HAL函數如表8-2所示。8.3USART的HAL驅動程序分組函數名功能說明初始化和總體功能

HAL_UART_Init()串口初始化,設置串口通信參數HAL_UART_MspInit()串口初始化的MSP弱函數,在HAL_UART_Init()中被調用。重新實現的這個函數一般用于串口引腳的GPIO初始化和中斷設置HAL_UART_GetState()獲取串口當前狀態HAL_UART_GetError()返回串口錯誤代碼HAL_UART_Transmit()阻塞方式發送一個緩沖區的數據,發送完成或超時后才返回HAL_UART_Receive()阻塞方式將數據接收到一個緩沖區,接收完成或超時后才返回阻塞式傳輸HAL_UART_Transmit_IT()以中斷方式(非阻塞式)發送一個緩沖區的數據HAL_UART_Receive_IT()以中斷方式(非阻塞式)將指定長度的數據接收到緩沖區中斷方式傳輸HAL_UART_Transmit_DMA()以DMA方式發送一個緩沖區的數據HAL_UART_Receive_DMA()以DMA方式將指定長度的數據接收到緩沖區DMA方式傳輸HAL_UART_Transmit_DMA()以DMA方式發送一個緩沖區的數據HAL_UART_Receive_DMA()以DMA方式將指定長度的數據接收到緩沖區表8-2串口操作的常用HAL函數HAL_UART_DMAPause()暫停DMA傳輸過程HAL_UART_DMAResume()繼續先前暫停的DMA傳輸過程HAL_UART_DMAStop()停止DMA傳輸過程HAL_UART_Abort()終止以中斷方式或DMA方式啟動的傳輸過程,函數自身以阻塞方式運行HAL_UART_AbortTransmit()終止以中斷方式或DMA方式啟動的數據發送過程,函數自身以阻塞方式運行HAL_UART_AbortReceive()終止以中斷方式或DMA方式啟動的數據接收過程,函數自身以阻塞方式運行HAL_UART_Abort_IT()終止以中斷方式或DMA方式啟動的傳輸過程,函數自身以非阻塞方式運行HAL_UART_AbortTransmit_IT()終止以中斷方式或DMA方式啟動的數據發送過程,函數自身以非阻塞方式運行HAL_UART_AbortReceive_IT()終止以中斷方式或DMA方式啟動的數據接收過程,函數自身以非阻塞方式運行1. 串口初始化函數HAL_UART_Init()用于串口初始化,主要是設置串口通信參數。其原型定義如下:HAL_StatusTypeDefHAL_UART_Init(UART_HandleTypeDef*huart)2. 阻塞式數據傳輸串口數據傳輸有兩種模式:阻塞模式和非阻塞模式。(1)阻塞模式(blockingmode)就是輪詢模式,例如,使用函數HAL_UART_Transmit()發送一個緩沖區的數據時,這個函數會一直執行,直到數據傳輸完成或超時之后,函數才返回。(2)非阻塞模式(non-blockingmode)是使用中斷或DMA方式進行數據傳輸,例如,使用函數HAL_UART_Transmit_IT()啟動一個緩沖區的數據傳輸后,該函數立刻返回。數據傳輸的過程引發各種事件中斷,用戶在相應的回調函數里進行處理。以阻塞模式發送數據的函數是HAL_UART_Transmit(),其原型定義如下:HAL_StatusTypeDefHAL_UART_Transmit(UART_HandleTypeDef*huart,uint8_t*pData,uint16_tSize,uint32_tTimeout)3. 非阻塞式數據傳輸以中斷或DMA方式啟動的數據傳輸是非阻塞式的。我們將在第12章介紹DMA方式,在本章只介紹中斷方式。以中斷方式發送數據的函數是HAL_UART_Transmit_IT(),其原型定義如下:HAL_StatuaTypeDetHAL_UART_Transmit_IT(UART_HandleTypeDef*huart,uint8_t*pData,uint16_tSize)8.3.2常用的宏函數在HAL驅動程序中,每個外設都有一些以“_HAL”為前綴的宏函數。這些宏函數直接操作寄存器,主要是進行啟用或禁用外設、開啟或禁止事件中斷、判斷和清除中斷標志位等操作。串口操作常用的宏函數如表8-3所示。宏函數功能描述_HAL_UART_ENABLE(_HANDLE_)啟用某個串口,例如_HAL_UART_ENABLE(&huart1)_HAL_UART_DISABLE(_HANDLE_)禁用某個串口,例如_HAL_UART_DISABLE(&huartl)_HAL_UART_ENABLE_IT(_HANDLE,INTERRUPT)允許某個事件產生硬件中斷,例如_HAL_UART_ENABLE_IT(&huartl,UART_IT_IDLE)_HAL_UART_ENABLE_IT(_HANDLE,INTERRUPT)禁止某個事件產生硬件中斷,例如_HAL_UART_ENABLE_IT(&huartl,UART_IT_IDLE)_HAL_UART_GET_IT_SOURCE(_HANDLE,IT)檢查某個事件是否被允許產生硬件中斷_HAL_UART_GET_FLAG(HANDLE,FLAG_)檢查某個事件的中斷標志位是否被置位_HAL_UART_CLEAR_FLAG(HANDLE,FLAG)清除某個事件的中斷標志位表8-3串口操作常用的宏函數這些宏函數中的參數_HANDLE_是串口外設對象指針,參數_INTERRUPT_和_IT_都是中斷事件類型。一個串口只有一個中斷號,但是中斷事件類型較多,文件stm32f4xx_hal_uart.h定義了這些中斷事件類型的宏,全部中斷事件類型定義如下:#defineUART_IT_PE((uint32_t)(UART_CR1_REG_INDEX<<28U|USART_CR1_PEIE))#defineUART_IT_TXE((uint32_t)(UART_CR1_REG_INDEX<<28U|USART_CR1_TXEIE))#defineUART_IT_TC((uint32_t)(UART_CR1_REG_INDEX<<28U|USART_CR1_TCIE))#defineUART_IT_RXNE((uint32_t)(UART_CR1_REG_INDEX<<28U|USART_CR1_RXNEIE))#defineUART_IT_IDLE((uint32_t)(UART_CR1_REG_INDEX<<28U|USART_CR1_IDLEIE))#defineUART_IT_LBD((uint32_t)(UART_CR2_REG_INDEX<<28U|USART_CR2_LBDIE))#defineUART_IT_CTS((uint32_t)(UART_CR3_REG_INDEX<<28U|USART_CR3_CTSIE))#defineUART_IT_ERR((uint32_t)(UART_CR3_REG_INDEX<<28U|USART_CR3_EIE))

8.3.3中斷事件與回調函數一個串口只有一個中斷號,也就是只有一個ISR,例如,USART1的全局中斷對應的ISR是USART1_IRQHandler()。在STM32CubeMX自動生成代碼時,其ISR框架會在文件stm32f4xx_it.c中生成,代碼如下:voidUSART1_IRQHandler(void)//USART1中斷ISR{HAL_UART_IRQHandler(&huart1);//串口中斷通用處理函數}所有串口的ISR都是調用HAL_UART_IRQHandler()這個處理函數,這個函數是中斷處理通用函數。這個函數會判斷產生中斷的事件類型、清除事件中斷標志位、調用中斷事件對應的回調函數。對函數HAL_UART_IRQHandler()進行代碼跟蹤分析,整理出如表8-4所示的串口中斷事件類型與回調函數的對應關系。注意,并不是所有中斷事件有對應的回調函數,例如,UART_IT_IDLE中斷事件就沒有對應的回調函數。中斷事件類型宏定義中斷事件描述對應的回調函數UARTIT_CTSCTS信號變化中斷無UARTIT_LBDLIN打斷檢測中斷無UART_IT_TXE發送數據寄存器非空中斷無UART_IT_TC傳輸完成中斷,用于發送完成HAL_UART_TxCpltCallback()UART_ITRXNE接收數據寄存器非空中斷HAL_UART_RxCpltCallback()UART_IT_IDLE線路空閑狀態中斷無UART_IT_PE奇偶校驗錯誤中斷HAL_UART_ErrorCallback()UARTIT_ERR發生幀錯誤、噪聲錯誤、溢出錯誤的中斷HAL_UART_ErrorCallback()表8-4串口中斷事件類型及其回調函數STM32通常具有3個以上的串行通信口(USART),可根據需要選擇其中一個。在串行通信應用的實現中,難點在于正確配置、設置相應的USART。與51單片機不同的是,除了要設置串行通信口的波特率、數據位數、停止位和奇偶校驗等參數外,還要正確配置USART涉及的GPIO和USART口本身的時鐘,即使能相應的時鐘。否則,無法正常通信。8.4采用STM32Cube和HAL庫的USART串行通信應用實例8.4.1STM32的USART的基本配置流程STM32F4的USART的功能有很多。最基本的功能就是發送和接收。其功能的實現需要串口工作方式配置、串口發送和串口接收三部分程序。本節只介紹基本配置,其他功能和技巧都是在基本配置的基礎上完成的,讀者可參考相關資料。HAL庫提供的串口相關操作函數。(1)串口參數初始化(波特率/停止位等),并使能串口。串口作為STM32的一個外設,HAL庫為其配置了串口初始化函數。接下來看看串口初始化函數HAL_UART_Init相關知識,定義如下:HAL_StatusTypeDefHAL_UART_Init(UART_HandleTypeDef*huart);(2)使能串口和GPIO口時鐘。要使用串口,所以必須使能串口時鐘和使用到的GPIO口時鐘。例如要使用串口1,所以必須使能串口1時鐘和GPIOA時鐘(串口1使用的是PA9和PA10)。(3)GPIO口初始化設置(速度,上下拉等)以及復用映射配置。在HAL庫中GPIO口初始化參數設置和復用映射配置是在函數HAL_GPIO_Init中一次性完成的。這里只需要注意,要復用PA9和PA10為串口發送接收相關引腳,需要配置GPIO口為復用,同時復用映射到串口1。配置源碼如下:GPIO_Initure.Pin=GPIO_PIN_9;//PA9GPIO_Initure.Mode=GPIO_MODE_AF_PP;//復用推挽輸出GPIO

Initure.Pull=GPIO_PULLUP;//上拉GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH;//高速HAL_GPIO_Init(GPIOA,&GPIO_Initure);//初始化

PA9GPIO_Initure.Pin=GPIO_PIN_10;//PA10GPIO

Initure.Mode=GPIO_MODE_AF_INPUT;//模式要設置為復用輸入模式!HAL_GPIO_Init(GPIOA,&GPIO_Initure);//初始化

PA10(4)開啟串口相關中斷,配置串口中斷優先級。HAL庫中定義了一個使能串口中斷的標識符__HAL_UART_ENABLE_IT,可以把它當一個函數來使用,具體定義請參考HAL庫文件stm32f4xx_hal_uart.h中該標識符定義。例如要使能接收完成中斷,方法如下:HAL_UART_ENABLE_IT(huart,UART_IT_RXNE); //開啟接收完成中斷(5)編寫中斷服務函數。串口1中斷服務函數為:voidUSART1_IRQHandler(void);當發生中斷的時候,程序就會執行中斷服務函數。然后在中斷服務函數中編寫們相應的邏輯代碼即可。(6)串口數據接收和發送。STM32F4的發送與接收是通過數據寄存器USART_DR來實現的,這是一個雙寄存器,包含了TDR和RDR。當向該寄存器寫數據的時候,串口就會自動發送,當收到數據的時候,也是存在該寄存器內。HAL庫操作USART_DR寄存器發送數據的函數是:HAL_StatusTypeDefHAL_UART_Transmit(UART_HandleTypeDef*huart,uint8_t*pData,uint16_tSize,uint32_tTimeout);通過該函數向串口寄存器USART_DR寫入一個數據。HAL庫操作USART_DR寄存器讀取串口接收到的數據的函數是:HAL_StatusTypeDefHAL_UART_Receive(UART_HandleTypeDef*huart,uint8_t*pData,uint16_tSize,uint32_tTimeout);通過該函數可以讀取串口接收到的數據。8.4.2USART串行通信應用的硬件設計為利用USART實現開發板與計算機通信,需要用到一個USB轉USART的IC電路,選擇CH340G芯片來實現這個功能。CH340G是一個USB總線的轉接芯片,實現USB轉USART、USB轉IrDA紅外或者USB轉打印機接口。使用其USB轉USART功能,具體電路設計如圖8-6所示。將CH340G的TXD引腳與USART1的RX引腳連接CH340G的RXD引腳與USART1的TX引腳連接。CH340G芯片集成在開發板上,其地線(GND)已與控制器的GND相連。在本實例中,編寫一個程序實現STM32通過串口1和上位機對話,STM32在收到上位機發過來的字符串(以回車換行結束)后,會返回給上位機。同時每隔一定時間,通過串口1輸出一段信息到電腦。DS0閃爍,提示程序在運行。圖8-6USB轉串行接口的硬件電路設計8.4.3 USART串行通信應用的軟件設計STM32F407ZGT6有四個USART和兩個UART,其中USART1和USART6的時鐘來源于APB2總線時鐘,其最大頻率為84MHz,其他四個的時鐘來源于APB1總線時鐘,其最大頻率為42MHz。USART_InitTypeDef結構體成員用于設置USART工作參數,并由外設初始化配置函數,比如MX_USART1_UART_Init()調用,這些設定參數將會設置外設相應的寄存器,達到配置外設工作環境的目的。初始化結構體定義在stm32f4xx_hal_usart.h文件中,初始化庫函數定義在stm32f4xx_hal_usart.c文件中,編程時可以結合這兩個文件內注釋使用。USART_InitTypeDef結構體如下。typedefstruct{uint32_tBaudRate;//波特率uint32_tWordLength;//字長uint32_tStopBits;//停止位uint32_tParity;//校驗位uint32_tMode;//UART模式uint32_tHwFlowCtl;//硬件流控制uint32_tOverSampling;//過采樣模式}USART_InitTypeDef;1.通過STM32CubeMX新建工程通過STM32CubeMX新建工程的步驟如下:(1)新建文件夾Demo目錄下新建文件夾USART,這是保存新建工程的文件夾。(2)新建STM32CubeMX工程在STM32CubeMX開發環境中新建工程。(3)選擇MCU或開發板CommercialPartNumber和MCUs/MPUsList選擇STM32F407ZGT6,選擇StartProject啟動工程。(4)保存STM32CubeMX工程使用STM32CubeMX菜單File→SaveProject,保存工程。(5)生成報告使用STM32CubeMX菜單File→GenerateReport生成當前工程的報告文件。(6)配置MCU時鐘樹STM32CubeMXPinout&Configuration子頁面下,選擇SystemCore→RCC,HighSpeedClock(HSE)根據開發板實際情況,選擇Crystal/CeramicResonator(晶體/陶瓷晶振)。(7)配置MCU外設首先配置USART1,STM32CubeMXPinout&Configuration子頁面下選擇Connectivity→USART1,對USART1進行設置。Mode選擇Asynchronous,HardwareFlowControl(RS232)選擇Disable,ParameterSettings具體配置如圖8-7所示。圖8-7USART1配置頁面NVIC配置頁面如圖8-8所示。

圖8-8NVIC配置頁面CodeGeneration頁面Selectforinitsequenceordering欄勾選USART1globalinterrupt。NVICCodeGeneration配置頁面如圖8-9所示。

圖8-9NVICCodeGeneration配置頁面根據LED和USART1電路,整理出MCU連接的GPIO引腳的輸入/輸出配置,如表8-5所示。。

溫馨提示

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

評論

0/150

提交評論