串口通信大家都很熟悉,一邊發送一邊接收,但有些產品應用時會發現硬件接口不夠了,或者線不夠了,這是就可能用到單線通信了,一條線實現半雙工通信,研究了很久終于搞好了,記錄見附件
/* Enabe HalfDuplex mode for USART2 */ USART_HalfDuplexCmd(USART1, ENABLE);// CR3_HDSEL=1
USART_LINCmd((USART1, DISABLE);// CR2_LINEN=0 USART_ClockInitTypeDef USART_ClockInitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); USART_ClockInitStructure.USART_Clock = USART_Clock_Disable; // CR2_CLKEN=0 USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low; USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge; USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable; USART_ClockInit(USART2, &USART_ClockInitStructure); USART_SmartCardCmd(USART1, DISABLE); // CR3_SCEN=0 USART_IrDACmd(USART1, DISABLE); // CR3_IREN=0
|