
?硬件
野火指南者開發(fā)板
?軟件
【資料圖】
CubeMx & MDK & 串口調(diào)試助手
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中打開。
打開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)的。
我們可以看到,發(fā)送的數(shù)據(jù)正常,串口1能夠正常使用。
標(biāo)簽: