WhyCan Forum(哇酷论坛)

人过留名,雁过留声,感谢各位朋友不离不弃地支持。 QQ: 516333132, 微信: whycan_cn (哇酷网/挖坑网/填坑网) admin@whycan.cn

您尚未登录。

#1 2020-02-03 20:31:09

xiaohui
会员
注册时间: 2019-01-15
累计积分: 75

[已解决]swm320的uart0无法工作在波特率为115200的时候

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)

离线

#2 2020-02-03 20:40:52

xiaohui
会员
注册时间: 2019-01-15
累计积分: 75

Re: [已解决]swm320的uart0无法工作在波特率为115200的时候

已找到问题,官方库的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)

离线

页脚