# HG changeset patch # User jld # Date 1293788246 0 # Node ID cd4e37e756483b836c05406f66405ffc90c087a3 # Parent 790fa8c690f453e52c886c5732c517a94c4e3f95 * src/stm32_serial.c, src/stm32_serial.h: Set the M bit when configuring for 8 data bits + parity bit. [ Bugzilla 1001068 ] diff --git a/packages/devs/serial/cortexm/stm32/current/ChangeLog b/packages/devs/serial/cortexm/stm32/current/ChangeLog --- a/packages/devs/serial/cortexm/stm32/current/ChangeLog +++ b/packages/devs/serial/cortexm/stm32/current/ChangeLog @@ -1,3 +1,8 @@ +2010-12-31 John Dallaway + + * src/stm32_serial.c, src/stm32_serial.h: Set the M bit when + configuring for 8 data bits + parity bit. [ Bugzilla 1001068 ] + 2008-10-07 Nick Garnett * cdl/ser_cortexm_stm32.cdl: @@ -10,7 +15,7 @@ 2008-10-07 Nick Garnett dev_priv; const CYG_ADDRWORD base = stm32_chan->base; cyg_uint32 parity = select_parity[new_config->parity]; - cyg_uint32 word_length = select_word_length[new_config->word_length-CYGNUM_SERIAL_WORD_LENGTH_5]; + cyg_uint32 word_length = ((new_config->word_length == CYGNUM_SERIAL_WORD_LENGTH_8) && + (new_config->parity != CYGNUM_SERIAL_PARITY_NONE)) ? + CYGHWR_HAL_STM32_UART_CR1_M_9 : CYGHWR_HAL_STM32_UART_CR1_M_8; cyg_uint32 stop_bits = select_stop_bits[new_config->stop]; cyg_uint32 cr1 = 0; cyg_uint32 cr2 = 0; diff --git a/packages/devs/serial/cortexm/stm32/current/src/stm32_serial.h b/packages/devs/serial/cortexm/stm32/current/src/stm32_serial.h --- a/packages/devs/serial/cortexm/stm32/current/src/stm32_serial.h +++ b/packages/devs/serial/cortexm/stm32/current/src/stm32_serial.h @@ -54,16 +54,6 @@ #include // Register definitions // ==================================================================== -// Translate system word length selector into local values. - -static cyg_uint32 select_word_length[] = { - 0, - 0, - 0, - CYGHWR_HAL_STM32_UART_CR1_M_8 -}; - -// ==================================================================== // Translate system stop bit selector into control register bits. static cyg_uint32 select_stop_bits[] = {