1. 准備工作
硬件准備
開發板
首先需要准備一個小熊派IoT開發板,並通過USB線與電腦連接。
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
函數如下:
1 int main(void) 2 { 3 /* USER CODE BEGIN 1 */ 4 char str[12] = "Hello World\n"; 5 char recv_buf; 6 /* USER CODE END 1 */ 7 8 HAL_Init(); 9 10 SystemClock_Config(); 11 12 MX_GPIO_Init(); 13 MX_USART1_UART_Init(); 14 15 /* USER CODE BEGIN 2 */ 16 HAL_UART_Transmit(&huart1, (uint8_t*)str, 12, 0xFFFF); 17 /* USER CODE END 2 */ 18 19 while (1) 20 { 21 /* USER CODE END WHILE */ 22 /* USER CODE BEGIN 3 */ 23 //接收12個字節的數據,不超時 24 if(HAL_OK == HAL_UART_Receive(&huart1, &recv_buf, 1, 0xFFFF)) 25 { 26 //將接收到的數據發送 27 HAL_UART_Transmit(&huart1, &recv_buf, 1, 0xFFFF); 28 } 29 } 30 /* USER CODE END 3 */ 31 }
編譯代碼
編譯整個工程:
設置下載器
實驗現象
下載運行后,實驗現象如下:
至此,我們已經學會了如何配置USART使用查詢模式發送和接收數據,下一節將講述如何配置USART使用中斷模式接收數據。