單片機基礎——使用USART發送和接收數據(查詢模式)


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使用中斷模式接收數據。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM