RT.使用的是内部的40mhz时钟。
void SerialInit(void)
{
UART_InitStructure UART_initStruct;
PORT_Init(PORTA, PIN2, FUNMUX0_UART0_RXD, 1); //GPIOA.2ΪUART0
PORT_Init(PORTA, PIN3, FUNMUX1_UART0_TXD, 0); //GPIOA.3ΪUART0
UART_initStruct.Baudrate = 115200;
UART_initStruct.DataBits = UART_DATA_8BIT;
UART_initStruct.Parity = UART_PARITY_NONE;
UART_initStruct.StopBits = UART_STOP_1BIT;
UART_initStruct.RXThreshold = 1;
UART_initStruct.RXThresholdIEn = 1;
UART_initStruct.TXThreshold = 3;
UART_initStruct.TXThresholdIEn = 0;
UART_initStruct.TimeoutTime = 10;
UART_initStruct.TimeoutIEn = 1;
UART_Init(UART0, &UART_initStruct);
NVIC_DisableIRQ(UART0_IRQn);
UART_Open(UART0);
}
现象串口输出乱码
波特率为57600的时候正常
最近编辑记录 xiaohui (2020-02-03 20:42:50)
离线
已找到问题,官方库的bug
SWM320_uart.c(58):
UARTx->BAUD |= ((SystemCoreClock/16/initStruct->Baudrate - 1) << UART_BAUD_BAUD_Pos);
改为
UARTx->BAUD |= ((SystemCoreClock/16/(initStruct->Baudrate - 1)) << UART_BAUD_BAUD_Pos);
希望官网修改@华芯微特
最近编辑记录 xiaohui (2020-02-03 20:43:24)
离线