本帖最后由 coderdd 于 2017-6-23 07:52 编辑
用的stm32f103的片子,115200的波特率,现在偶尔发现接收串口数据会漏掉一个字节,有点致命,程序怎样避免呢?是否要调整串口中断优先级?还是怎么优化?
void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
RX_Buffer_Temp=USART_ReceiveData(USART1);
if(uart_num<98)
{
RX_Buffer[uart_num] = RX_Buffer_Temp;
uart_num++;
}
else
{
uart_num=0;
}
if(RX_Buffer_Temp=='\n'&&RX_Buffer[uart_num-2]=='\r')
{
uart_num=0;
flagReceive = 1;
}
}
if(USART_GetFlagStatus(USART1,USART_FLAG_ORE) == SET) // 检查 ORE 标志
{
USART_ClearFlag(USART1,USART_FLAG_ORE);
RX_Buffer_Temp=USART_ReceiveData(USART1);
}
}
|