STM32CubeMx入門教程(2):USART的使用

2023-07-11 15:12:01 來源:嵌入式開發(fā)始站

?硬件

野火指南者開發(fā)板

?軟件


【資料圖】

CubeMx & MDK & 串口調(diào)試助手

1.STM32CubeMx 配置

USART的配置

我們延續(xù)LED項(xiàng)目的時(shí)鐘配置,在LED的基礎(chǔ)上配置USART。使用CubeMX打開LED燈的項(xiàng)目。

原理圖

我們從原理圖中可以看出串口1使用的是PA10 & PA9 這兩個(gè)引腳。

CubeMx

在cubeMx的配置中,我們主要按照上圖的配置就可以了,使能串口1 ,異步模式,硬件流控制關(guān)閉,在參數(shù)設(shè)置中,波特率為115200,8位數(shù)據(jù),無優(yōu)先級(jí),1位停止位,方向發(fā)送和接收。Project 和Code Generator , Advanced Settings 和第一個(gè)LED項(xiàng)目設(shè)置是一樣的,可以參考,點(diǎn)擊GENERATECODE 生成代碼。在MDK中打開。

2.MDK 編寫應(yīng)用程序

打開MDK,在庫(kù)中stm32f1xxhaluart.h 中可以看到這么多的操作usart的函數(shù)供使用,CubeMx 已經(jīng)為我們初始化了usart, 我們只需要添加應(yīng)用函數(shù)就可以了。

這里我們通過重新定義函數(shù)來實(shí)現(xiàn)printf 函數(shù),以后發(fā)送數(shù)據(jù)到串口控制臺(tái)可直接使用printf函數(shù)。

在usart.c 文件中包含頭文件stdio.h,并添加下面代碼:

/* USER CODE BEGIN 1 */#ifdef __GNUC__       #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)#else       #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)#endifPUTCHAR_PROTOTYPE{              HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);              return ch;}/* USER CODE END 1 */

注意:代碼必須添加在USER CODE BEGIN X 區(qū)域,否則重新生成代碼會(huì)丟失。

在main.c 函數(shù)中添加測(cè)試代碼:

/* USER CODE BEGIN 3 */              HAL_UART_Transmit(&huart1, "Hello!\\r\\n", 9, 10);              HAL_Delay(3000);              printf("\\n\\r this is test forprintf function using for first\\n\\r\\n");              HAL_Delay(3000);}   /* USER CODE END 3 */

1.編譯后下載到開發(fā)板中可以看到打印數(shù)據(jù)沒有問題。串口1使用正常。

HALUARTTransmit(&huart1, "Hello!\\r\\n", 9, 10);// 這個(gè)是串口的發(fā)送數(shù)據(jù)函數(shù)

printf("\\n\\r this is test for printf function using for first\\n\\r\\n");// printf 函數(shù)是我們通過重新定義使用C庫(kù)函數(shù)實(shí)現(xiàn)的。

3.效果演示

我們可以看到,發(fā)送的數(shù)據(jù)正常,串口1能夠正常使用。

標(biāo)簽:

上一篇:電力電子控制中常用坐標(biāo)變換的性質(zhì)及約束條件
下一篇:最后一頁(yè)