mtk 在这里留了个坑:
A00D000C LCR Line Control Register
SP Stick parity
0: No effect.
1: The parity bit is forced to a defined state, depending on the states of EPS and PEN: If EPS=1 & PEN=1, the even parity bit will be set and checked. If EPS=0 & PEN=1, the odd parity bit will be set and checked.
所以代码应该是如下:
/* setup parity bit */
byte &= ~UART_LCR_PARITY_MASK;
switch (parity) {
case HAL_UART_PARITY_NONE:
byte &= ~UART_LCR_PEN_MASK;
break;
case HAL_UART_PARITY_ODD:
byte |= UART_LCR_PEN_MASK;
byte |= UART_LCR_EPS_ODD;
break;
case HAL_UART_PARITY_EVEN:
byte |= UART_LCR_PEN_MASK;
byte |= UART_LCR_EPS_EVEN;
break;
default:
break;
}