實驗?zāi)康?更加熟練的掌握STM32的開發(fā)環(huán)境,實現(xiàn)STM32串口收發(fā)通信實驗。
實驗過程:
新建工程:新建工程的步驟在此就不一一解釋了,有需要學(xué)習(xí)的請參照零基礎(chǔ)開發(fā)STM32單片機程序系列一或者按照下面的方法進行項目的修改。打開上次新建工程目錄,找到.ioc文件雙擊打開后如圖2所示。
圖1 上次工程目錄
圖2 打開后的界面
單片機引腳配置:配置單片機的時鐘,修改單片機引腳對新的串口外設(shè)接口進行定義(主要定義串口的端口例如你選擇的是串口幾,因為很多的單片機都是有多組串口的)。本例程以串口1為例如圖3所示。在clock configuration配置系統(tǒng)的詳細(xì)時鐘,在configuration中設(shè)置具體的串口等外設(shè)的具體參數(shù),比如說串口的波特率(115200,9600,4800等)兩個設(shè)備之間的通訊參數(shù)必須一致才能正常通信,否則會產(chǎn)生無法通信或者亂碼等情況,串口的停止位等具體如圖4所示。注:當(dāng)對應(yīng)的引腳配置成功后會顯示為綠色。
圖3 串口的引腳配置
圖4 串口的參數(shù)配置
代碼的自動生成:至此我們對串口的操作整體框架就配置完成了,下面就進行代碼的自動生成,然后到我們所配置的編譯環(huán)境下去工作了。點擊project下的代碼生成選項軟件自動執(zhí)行代碼生成工作,生成完畢后點擊open project就此打開工程如圖5所示。打開工程編譯無誤后進行串口功能性配置如圖6所示。
圖5 打開編譯后的工程
串口的功能配置:根據(jù)實驗?zāi)康乃枋龅哪菢游覀円獙崿F(xiàn)串口的收發(fā)和功能那么我們就要找到串口的收發(fā)函數(shù)然后修改函數(shù)的參數(shù),還要在對串口進行初始化設(shè)置。在main.c文件中我們會看到串口的初始化參數(shù)我們可以根據(jù)自己的設(shè)備要求配置不同的波特率,數(shù)據(jù)長度,停止位,奇偶校驗位等。初始化完畢后就要在while(1)函數(shù)下添加執(zhí)行函數(shù),串口的操作函數(shù)在stm32f4xx_hal_uart.h函數(shù)下可以找到如下圖7所示,其分為三種方式分別為輪詢方式,中斷方式和DMA三種方式。大家可以根據(jù)自己的需要來選擇,這里以輪詢方式為例,接下來把操作函數(shù)復(fù)制到main函數(shù)中。
圖6 串口初始化參數(shù)
圖7 串口三種操作函數(shù)
串口操作代碼:將串口的操作函數(shù)復(fù)制到main函數(shù)中后進行參數(shù)修改。發(fā)送操作函數(shù)中的參數(shù)UART_HandleTypeDef *huart 這句用自己定義的串口號代替,uint8_t *pData這句用你所要發(fā)送內(nèi)容的地址代替,uint16_t Size這句用所發(fā)送內(nèi)容的大小代替。接下來大家可以根據(jù)自己的需要來定義自己的收發(fā)內(nèi)容了(注意哦,在設(shè)置之前記得對發(fā)送接收數(shù)據(jù)進行初始化處理哦)修改后如下圖9所示。
圖8 串口執(zhí)行函數(shù)需要替換的地方
圖9 修改后的程序