void HAL_USART_Half_Duplex(HAL_USART_Serial serial, bool Enable) { if (HAL_USART_Is_Enabled(serial)) { USART_Cmd(usartMap[serial]->usart_peripheral, DISABLE); } if (Enable) { usartMap[serial]->usart_config |= SERIAL_HALF_DUPLEX; } else { usartMap[serial]->usart_config &= ~(SERIAL_HALF_DUPLEX); } HAL_USART_Configure_Pin_Modes(serial, usartMap[serial]->usart_config); // These bits need to be cleared according to the reference manual usartMap[serial]->usart_peripheral->CR2 &= ~(USART_CR2_LINEN | USART_CR2_CLKEN); usartMap[serial]->usart_peripheral->CR3 &= ~(USART_CR3_IREN | USART_CR3_SCEN); USART_HalfDuplexCmd(usartMap[serial]->usart_peripheral, Enable ? ENABLE : DISABLE); if (HAL_USART_Is_Enabled(serial)) { USART_Cmd(usartMap[serial]->usart_peripheral, ENABLE); } }
bool USARTSerial::isEnabled() { return HAL_USART_Is_Enabled(_serial); }