示例#1
0
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);
}