環境:
- 開發板:STM32F4探索者(正點原子)
一. 進行項目的必要配置
- 時鐘配置
- 調試配置
如果不大清楚,可以看 STM32CubMX工程創建(點亮LED)
二. 串口選擇
查看 STM32F4探索者 開發板的原理圖,如下圖所示,我們可以看到USB轉串口是在USART1
因此我們在 STM32CubeMX 中如下圖進行勾選,並進行配置
- 序號一,代表串口處於異步模式
- 序號二,關閉串口的硬件流控的功能
- 序號三,波特率設置,一般是根據通信的芯片進行選擇,這裏選擇是115200 bps
- 序號四,代表字長,這裏選擇 8 bit
- 序號五,代表校驗方式,這裏選擇無
- 序號六,代表停止位,這裏選擇 1 bit
這裏的配置一般與之通信的芯片相對應,當你通信不起來的時候,一般要注意查一下這裏
之後就可以點擊代碼生成了
三. 生成的代碼
我們可以在 usart.c 中,找到我們生成的代碼
- 序號一,是串口的一個實例
- 序號二,就是對我們的選擇的串口進行配置以及初始化,初始化內容就是我們第二部分所說
四. 串口相關庫函數
在 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之內沒有接收到數據,就打印接收超時
-
運行結果
從上圖,我們可以看到接收函數,只有接收夠且只有10個字節,纔會返回成功,否則都是接收超時
注意 :
首先我們要把代碼放在 main 函數中,並且,按照 STM32CubeMX 的規則,要把用戶增加的代碼放置在 BEGIN
和 END
之間,如上圖中的
/* USER CODE BEGIN WHILE */
//用戶代碼
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
//用戶代碼
/* USER CODE END 3 */
否則,再次使用 STM32CubeMX 生成代碼時,會丟失不在BEGIN
和 END
之間的代碼
-----------------------------------------------結束--------------------------------------------------------
文章有價值,請各位看官點個贊,關注我或者點右邊打個賞吧!