请问串口传输过程中,我可以通过TCP服务器发送串口波特率重置命令,使串口波特率更改吗?我程序中是让两个串口互发数据。
程序如下所示,我发现出现配置波特率之后,两个串口互发数据时,比如串口0发送12345,串口1那边只会接收123,串口0第二次发数据时,串口1接收的数据就是45123,接着串口0每次发送,串口1接收的数据都是45123。
如果我把波特率重置的这串代码注释掉,两个串口互发数据就没问题。
voidInitTerm()
{
#ifndef NOTERM
MAP_UARTConfigSetExpClk(CONSOLE,MAP_PRCMPeripheralClockGet(CONSOLE_PERIPH), UART_BAUD_RATE, (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE)); //串口0波特率及参数设置 MAP_UARTConfigSetExpClk(CONSOLE_YU,MAP_PRCMPeripheralClockGet(CONSOLE_PERIPH_YU), UART_BAUD_RATE, (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE)); //串口1波特率及参数设置
#endif
__Errorlog = 0;
}
void InitTerm1(unsigned long ulBaud)
{
MAP_UARTConfigSetExpClk(CONSOLE,MAP_PRCMPeripheralClockGet(CONSOLE_PERIPH), ulBaud, (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE)); //串口0波特率及参数设置
__Errorlog = 0;
}
void InitTerm2(unsigned long ulBaud)
{
MAP_UARTConfigSetExpClk(CONSOLE_YU,MAP_PRCMPeripheralClockGet(CONSOLE_PERIPH_YU), ulBaud, (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE)); //串口1波特率及参数设置
__Errorlog = 0;
}
pCh = NULL;
pCh = strstr (ReceiveData, "USART0_BR:");
if(NULL !=pCh)
{
atoi(pCh+10);
InitTerm1(atoi(pCh+10));
}
user5881203:
已解决,谢谢
Viki Shi:
gaoyang9992006:
可以更改,有人做的还有通过串口发送更改串口波特率的应用。通过串口给单片机发送更改波特率指令,然后单片机根据新的波特率重新初始化一次串口就行了。
user5881203:
回复 gaoyang9992006:
嗯嗯,谢谢,我是忘记程序初始化串口了。