那应该考虑接收中断如果发生溢出需要先读SR,再读DR寄存器
USART_ClearFlag(USART2,USART_FLAG_ORE); // ...
加了一个溢出中断判定,好像还是不行 {
if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE) != RESET)
{
Com1Recv.Buff = USART_ReceiveData(USART1);
if(Com1Recv.Ptr >= MAX_BYTES_COM_RECV)//溢出了,丢掉
{
Com1Recv.Ptr = 0;
}
}
if(USART_GetITStatus(USART1,USART_IT_ORE) != RESET)//接收一字节数据
{
USART_ClearFlag(USART1, USART_FLAG_ORE);
USART_ReceiveData(USART1);
}
} 串口一是与上位机通讯,,,串口2是接收模块数据,模块一直主动上传 1537342635(1) 谁是谁的谁520 发表于 2018-9-19 15:34
串口一是与上位机通讯,,,串口2是接收模块数据,模块一直主动上传
ST官方文档可以参考:
wenyangzeng 发表于 2018-9-19 16:30
ST官方文档可以参考:
现象如下,刚开始正常,后面发送没有回应,关闭串口,重新打开,又恢复正常,不过产品应该是重启过,数据恢复到0
谁是谁的谁520 发表于 2018-9-19 16:54
现象如下,刚开始正常,后面发送没有回应,关闭串口,重新打开,又恢复正常,不过产品应该是重启过,数据 ...
问题已解决,原因是USART_GetFlagStatus和USART_GetITStatus,,,,,获取ORE标记,需用USART_GetFlagStatus,然后清0
页:
1
[2]