突然间对串口通讯进入浆糊模式了

2019-07-21 02:25发布

主要是接收字符串这方面的问题。这是我写的一个中断函数,然后在串口助手发送1234。根据我的理解,因为串口都是8位8位发的,虽然我1234是同时从电脑串口发出,但实际操作是1发出进入一次中断,然后2发出进入一次中断。那么输出结果不应该是a1a2a3a4吗,但实际结果为a1a2a4。a3并没有出现。

我的理解是中断还没处理完,下个一中断就进入然后覆盖了之前的数据。但如果我把Usart_SendByte(USART1, 'a');这一句注释掉,不管我发多长的数据(比如1234567890),数据都不会丢失。

大佬们能不能帮小弟解释下,谢谢。

[mw_shl_code=c,true]void USART1_IRQHandler(void)
{
  uint8_t recv;
   
  if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
  {
    Usart_SendByte(USART1, 'a');
    recv = USART_ReceiveData(USART1);
    Usart_SendByte(USART1, recv);
  }
}[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。