diff --git a/os/hal/ports/STM32/LLD/USARTv2/hal_uart_lld.c b/os/hal/ports/STM32/LLD/USARTv2/hal_uart_lld.c index 5bf3b6089..54378ff06 100644 --- a/os/hal/ports/STM32/LLD/USARTv2/hal_uart_lld.c +++ b/os/hal/ports/STM32/LLD/USARTv2/hal_uart_lld.c @@ -127,6 +127,11 @@ #define UART8 USART8 #endif +/* Workaround for more differences in headers.*/ +#if !defined(USART_CR1_M0) +#define USART_CR1_M0 USART_CR1_M +#endif + /*===========================================================================*/ /* Driver exported variables. */ /*===========================================================================*/ @@ -845,7 +850,7 @@ void uart_lld_start(UARTDriver *uartp) { /* Static DMA setup, the transfer size depends on the USART settings, it is 16 bits if M=1 and PCE=0 else it is 8 bits.*/ - if ((uartp->config->cr1 & (USART_CR1_M | USART_CR1_PCE)) == USART_CR1_M) + if ((uartp->config->cr1 & (USART_CR1_M | USART_CR1_PCE)) == USART_CR1_M0) uartp->dmamode |= STM32_DMA_CR_PSIZE_HWORD | STM32_DMA_CR_MSIZE_HWORD; dmaStreamSetPeripheral(uartp->dmarx, &uartp->usart->RDR); dmaStreamSetPeripheral(uartp->dmatx, &uartp->usart->TDR); diff --git a/readme.txt b/readme.txt index ace1e6835..06a8e9227 100644 --- a/readme.txt +++ b/readme.txt @@ -88,6 +88,8 @@ ***************************************************************************** *** Next *** +- HAL: Fixed wrong frame size code in STM32 USARTv2 UART driver (bug #851) + (backported to 17.6.1 and 16.1.9). - NIL: Fixed documentation-related issues (bug #850)(backported to 17.6.1). - RT: Fixed documentation-related issues (bug #850)(backported to 17.6.1). - RT: Fixed leftover chcustomer.h file (bug #849)(backported to 17.6.1).