
尋求更簡潔舒適的閱讀體驗,請移步Mculover666的個人博客:
【STM32Cube_06】使用USART發送和接收數據(查詢模式)?www.mculover666.cn本篇文章主要介紹如何使用STM32CubeMX初始化STM32L431RCT6的USART,并使用查詢模式發送數據,使用查詢模式接收數據。
1. 準備工作
硬件準備
- 開發板 首先需要準備一個開發板,這里我準備的是STM32L4的開發板(BearPi):

軟件準備
- 需要安裝好Keil - MDK及芯片對應的包,以便編譯和下載生成的代碼;
- 準備一個串口調試助手,這里我使用的是
Serial Port Utility
;
Keil MDK和串口助手Serial Port Utility 的安裝包都可以在文末關注公眾號獲取,回復關鍵字獲取相應的安裝包:

2.生成MDK工程
選擇芯片型號
打開STM32CubeMX,打開MCU選擇器:

搜索并選中芯片STM32L431RCT6
:

配置時鐘源
- 如果選擇使用外部高速時鐘(HSE),則需要在System Core中配置RCC;
- 如果使用默認內部時鐘(HSI),這一步可以略過;
這里我都使用外部時鐘:

配置串口
小熊派開發板板載ST-Link并且虛擬了一個串口,原理圖如下:

這里我將開關撥到AT-MCU
模式,使PC的串口與USART1之間連接。
接下來開始配置USART1
:

配置時鐘樹
STM32L4的最高主頻到80M,所以配置PLL,最后使HCLK = 80Mhz
即可:


生成工程設置

代碼生成設置
最后設置生成獨立的初始化文件:

生成代碼
點擊GENERATE CODE
即可生成MDK-V5工程:

3. 在MDK中編寫、編譯、下載用戶代碼
編寫查詢模式發送和接收代碼
編寫 main
函數如下:
int main(void)
{/* USER CODE BEGIN 1 */char str[12] = "Hello Worldn";char recv_buf[12] = {0};/* USER CODE END 1 */HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 */HAL_UART_Transmit(&huart1, (uint8_t*)str, 12, 0xFFFF);/* USER CODE END 2 */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 *///接收12個字節的數據,不超時if(HAL_OK == HAL_UART_Receive(&huart1, (uint8_t*)recv_buf, 12, 0xFFFF)){//將接收到的數據發送HAL_UART_Transmit(&huart1, (uint8_t*)recv_buf, 12, 0xFFFF);}}/* USER CODE END 3 */
}
編譯代碼
編譯整個工程:

設置下載器


實驗現象
下載運行后,實驗現象如下:

至此,我們已經學會了如何配置USART使用查詢模式發送和接收數據,下一節將講述如何配置USART使用中斷模式接收數據。
更多精彩文章及資源,請關注我的微信公眾號:『mculover666』。
