您尚未登录。

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

xiaohui
会员
注册时间: 2019-01-15
已发帖子: 259
积分: 162.5

[已解决]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
已发帖子: 259
积分: 162.5

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)

离线

#3 2020-04-09 18:30:18

华芯微特
会员
注册时间: 2019-12-24
已发帖子: 168
积分: 168

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

谢谢提问,请到官网去查看哦~~~

xiaohui 说:

已找到问题,官方库的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);
希望官网修改@华芯微特

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn