[STM32L1XX] Reset UART on init

pull/1792/head
svastm 2016-05-26 09:25:19 +02:00
parent 3243b38f5b
commit 6ebb2e6c6c
1 changed files with 11 additions and 1 deletions

View File

@ -66,7 +66,7 @@ static void init_uart(serial_t *obj)
UartHandle.Init.Mode = UART_MODE_TX_RX;
}
// Fix because HAL_RCC_GetHCLKFreq() don't update anymore SystemCoreClock
// Fix because HAL_RCC_GetHCLKFreq() don't update anymore SystemCoreClock
SystemCoreClockUpdate();
HAL_UART_Init(&UartHandle);
@ -84,28 +84,38 @@ void serial_init(serial_t *obj, PinName tx, PinName rx)
// Enable UART clock
if (obj->uart == UART_1) {
__HAL_RCC_USART1_FORCE_RESET();
__HAL_RCC_USART1_RELEASE_RESET();
__USART1_CLK_ENABLE();
obj->index = 0;
}
if (obj->uart == UART_2) {
__HAL_RCC_USART2_FORCE_RESET();
__HAL_RCC_USART2_RELEASE_RESET();
__USART2_CLK_ENABLE();
obj->index = 1;
}
if (obj->uart == UART_3) {
__HAL_RCC_USART3_FORCE_RESET();
__HAL_RCC_USART3_RELEASE_RESET();
__USART3_CLK_ENABLE();
obj->index = 2;
}
#if defined(UART4_BASE)
if (obj->uart == UART_4) {
__HAL_RCC_UART4_FORCE_RESET();
__HAL_RCC_UART4_RELEASE_RESET();
__UART4_CLK_ENABLE();
obj->index = 3;
}
#endif
#if defined(UART5_BASE)
if (obj->uart == UART_5) {
__HAL_RCC_UART5_FORCE_RESET();
__HAL_RCC_UART5_RELEASE_RESET();
__UART5_CLK_ENABLE();
obj->index = 4;
}