STM32 uart 單線半雙工模式(cube版本)

STM32 uart 單線半雙工模式(cube版本)

1.引言

在某些場合下須要進行三線制串口通訊(信號線只有一根),這就要求進行單線半雙工的模式進行通訊。在這種狀況進行數據協議傳輸的過程當中,信號端須要來回切換輸入輸出模式。或者能夠將控制端口的發送和接口進行短接。那針對這種狀況,STM32提供了half-duplex功能,只要在軟件裏面開啓這項功能,芯片硬件層內部就會將發送和接收端口進行短接。具體的芯片如何寄存器操做這邊不作贅述,能夠本身手冊usart篇進行查閱。咱們下面來看看如何利用cubeMx進行配置。函數

2.配置關鍵步驟

本文使用的STM32F0芯片,打開cubeMx在Pinout標籤也下的USART1的mode 使能Sigle Wire(Half-Duplex)。以下圖所示。
學習

其餘配置跟普通的usart配置同樣沒有區別。注意這個時候硬件連線的時候須要接在TX端口。測試

3.軟件編寫

配置完成生產代碼以後,在main函數中利用添加代碼進行測試。ui

每次發送須要使能相應的功能
HAL_HalfDuplex_EnableTransmittercode

同理,接收數據前也要使能相應的功能
HAL_HalfDuplex_EnableReceiver(&huart1);接口

while (1)
  {
    
  /* USER CODE END WHILE */
    
  /* USER CODE BEGIN 3 */
    static uint8_t test = 6;
    //使能發送功能,每次發送前須要調用此函數
    HAL_HalfDuplex_EnableTransmitter(&huart1);
    HAL_UART_Transmit(&huart1, &test, 1, 2000);
    //使能接收功能。每次接收前須要調用此函數
    HAL_HalfDuplex_EnableReceiver(&huart1);
    HAL_UART_Receive(&huart1, &res, 1, 2000);

    if (res==6)
    {
      test++;
    }
  }

-----------------本文做者「智御電子」,期待與電子愛好者交流學習。----------------get

相關文章
相關標籤/搜索