打印
[技术问答]

HC32F460串口波特率设置19200,函数返回ErrorInvalidParameter

[复制链接]
633|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LEDyyds|  楼主 | 2024-2-26 21:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天,在调试项目的时候,遇到设置串口2波特率为19200的时候,USART_SetBaudrate(M4_USART2, 19200)函数返回 ErrorInvalidParameter,导致程序陷入了死循环,配置程序如下:
void USART2_LIN_Config(void){
   
#ifdef LIN_EN
#ifdef HC32_MCU
   stc_usart_uart_init_t stcInitCfg;
     en_result_t enRet;
     
     stcInitCfg.enClkDiv = UsartClkDiv_1;
     stcInitCfg.enClkMode = UsartIntClkCkNoOutput;
     stcInitCfg.enDataLength = UsartDataBits8;
     stcInitCfg.enDirection = UsartDataLsbFirst;
     stcInitCfg.enStopBit = UsartOneStopBit;
     stcInitCfg.enParity = UsartParityNone;
     stcInitCfg.enSampleMode = UsartSamleBit8;
     stcInitCfg.enDetectMode = UsartStartBitFallEdge;
     stcInitCfg.enHwFlow = UsartRtsEnable;
     enRet = USART_UART_Init(M4_USART2, &stcInitCfg);
     if (enRet != Ok)
        { while (1); }
     enRet = USART_SetBaudrate(M4_USART2, 19200);
     if (enRet != Ok)
        { while (1); }
     USART_FuncCmd(M4_USART2, UsartRx, Enable);
   USART_FuncCmd(M4_USART2, UsartTx, Enable);
     USART_FuncCmd(M4_USART2, UsartRxInt,Enable);
#endif
#endif
}


使用特权

评论回复
沙发
probedog| | 2024-2-27 09:40 | 只看该作者
确定一下你的MCU是否支持19200的波特率

使用特权

评论回复
板凳
laocuo1142| | 2024-2-27 10:30 | 只看该作者
检查你的stc_usart_uart_init_t结构体配置是否正确

使用特权

评论回复
地板
tagntangtangtan| | 2024-2-27 10:42 | 只看该作者
stcInitCfg.enClkDiv = UsartClkDiv_1;分频这块,频率太高了,不支持当前的波特率,改为16分频应该就可以了

使用特权

评论回复
5
duo点| | 2024-2-27 11:12 | 只看该作者
查看参考手册或数据手册把

使用特权

评论回复
6
onlycook| | 2024-2-27 12:00 | 只看该作者
你可以尝试使用一些标准的波特率值(如9600、115200等)来测试USART_SetBaudrate函数,看看是否能够成功设置。如果其他波特率值可以成功设置,那么问题可能确实出在19200这个特定的波特率值上。

使用特权

评论回复
7
七毛钱| | 2024-2-27 12:57 | 只看该作者
检查你的代码、函数实现、MCU文档以及USART模块的配置

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

117

主题

834

帖子

1

粉丝