HC32F460串口波特率设置19200,函数返回ErrorInvalidParameter
今天,在调试项目的时候,遇到设置串口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
}
确定一下你的MCU是否支持19200的波特率 检查你的stc_usart_uart_init_t结构体配置是否正确 stcInitCfg.enClkDiv = UsartClkDiv_1;分频这块,频率太高了,不支持当前的波特率,改为16分频应该就可以了 查看参考手册或数据手册把 你可以尝试使用一些标准的波特率值(如9600、115200等)来测试USART_SetBaudrate函数,看看是否能够成功设置。如果其他波特率值可以成功设置,那么问题可能确实出在19200这个特定的波特率值上。
检查你的代码、函数实现、MCU文档以及USART模块的配置
页:
[1]