STM32CubeMX之串口的使用 (阻塞模式)

環境:

  • 開發板:STM32F4探索者(正點原子)

一. 進行項目的必要配置

  • 時鐘配置
  • 調試配置

如果不大清楚,可以看 STM32CubMX工程創建(點亮LED)

二. 串口選擇

​ 查看 STM32F4探索者 開發板的原理圖,如下圖所示,我們可以看到USB轉串口是在USART1

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-MMWNiXVO-1593358229839)(/image/串口原理圖.png)]

因此我們在 STM32CubeMX 中如下圖進行勾選,並進行配置

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-uzJrqTjF-1593358229845)(/image/勾選串口.png)]

  • 序號一,代表串口處於異步模式
  • 序號二,關閉串口的硬件流控的功能
  • 序號三,波特率設置,一般是根據通信的芯片進行選擇,這裏選擇是115200 bps
  • 序號四,代表字長,這裏選擇 8 bit
  • 序號五,代表校驗方式,這裏選擇無
  • 序號六,代表停止位,這裏選擇 1 bit

這裏的配置一般與之通信的芯片相對應,當你通信不起來的時候,一般要注意查一下這裏

之後就可以點擊代碼生成了

三. 生成的代碼

我們可以在 usart.c 中,找到我們生成的代碼

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-vcDxcXkm-1593358229846)(/image/串口實例.png)]

  • 序號一,是串口的一個實例
  • 序號二,就是對我們的選擇的串口進行配置以及初始化,初始化內容就是我們第二部分所說

四. 串口相關庫函數

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-qkmS93o7-1593358229850)(/image/串口收發函數阻塞模式.png)]

functions 可以找到使用串口的相關函數,接收和發送函數

HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
  • 第一個參數,串口實例,如 huart1
  • 第二個參數,發送的數據
  • 第三個參數,發送的數據的大小
  • 第四個參數,超時時間
HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)

  • 第一個參數,串口實例,如 huart1
  • 第二個參數,接收的數據的緩存塊(數組)
  • 第三個參數,接收 N 個字節的數據
  • 第四個參數,超時時間,如果沒有接收 N 個字節,就是超時

五. 串口測試

主函數 中進行如下添加:

功能爲

  • 發送 hello usart1\r\n ,之後接收10個字節數據,若接收到10個字節數據,就發送接收到的數據,若在5000ms之內沒有接收到數據,就打印接收超時

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-0VdS29K3-1593358229857)(/image/測試代碼.png)]

  1. 運行結果

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-8rIovDQ0-1593358229859)(/image/測試串口.png)]

    從上圖,我們可以看到接收函數,只有接收夠且只有10個字節,纔會返回成功,否則都是接收超時

注意

​ 首先我們要把代碼放在 main 函數中,並且,按照 STM32CubeMX 的規則,要把用戶增加的代碼放置在 BEGINEND 之間,如上圖中的

/* USER CODE BEGIN WHILE */
//用戶代碼
 /* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
//用戶代碼
/* USER CODE END 3 */

​ 否則,再次使用 STM32CubeMX 生成代碼時,會丟失不在BEGINEND 之間的代碼

-----------------------------------------------結束--------------------------------------------------------
文章有價值,請各位看官點個贊,關注我或者點右邊打個賞吧!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章