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函數中利用添加代碼進行測試。

每次發送需要使能相應的功能
HAL_HalfDuplex_EnableTransmitter

同理,接收數據前也要使能相應的功能
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++;
	}
  }

-----------------本文作者“智御電子”,期待與電子愛好者交流學習。----------------


免責聲明!

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



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