中断法收数据,波特率38400就正常,再往高去,就收不全了。
测试程序,PC发送17个字节,STM32只能收到14个字节,以前在别的芯片上都是这么处理的,到stm32上行不通了、
中断服务函数里就这么一段处理
if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
/* Read one byte from the receive data register */
RxBuffer1.buffer[RxBuffer1.inptr++] = USART_ReceiveData(USART1);
if (RxBuffer1.inptr > RxBufferSize - 1) RxBuffer1.inptr = 0;
}
检查一下波特率的设置是否正确
波特率越高,对时钟的误差越敏感,请同时考虑时钟的误差和与PC端时钟误差的同步问题。
115200不算高啊
我用的是万利的开发板,难道时钟精度这么差?
115200没有问题
我试过,115200没有问题。如果担心波特率不同造成的问题,可以进行简单的试验:用同1块电路板,串口1发送,串口2接收。
楼上的兄弟
我现在觉得程序肯定没有问题,串口的初始化照example里写的,你的代码是怎么做的?