STM32串口接收中断问题

2019-07-14 21:09发布

  1. void USART1_IRQHandler(void)
  2. {
  3.         uint16_t Got_Data;
  4.         if(USART_GetiTStatus(USART1, USART_IT_RXNE) != RESET)
  5.         {
  6.                 Got_Data=USART_ReceiveData(USART1);//1
  7.                 delay_ms(10);//2.
  8.                 USART_SendData(USART1,Got_Data);//3
  9.         }
  10.        
  11.        
  12. }
复制代码上面这段中断处理函数由于我故意在里面加了个10ms延时,所以造成发出的和接收的不一致。
问题是:
1.在接收到第一个数据后,进入10MS延时时,第二个数据来了,那么还会触发中断么?我看说明书是说如果读了数据寄存器,那么标志位会清0,那么即使还没有退出这个函数,但是已经可以再次触发中断了,是不是意味着重新执行这个中断函数?
2.我在电脑上的串口助手里不断向芯片串口发送123456789,但是每次芯片发回来的只有12,请解释原因。
3.如果说现在我需要从串口接收大量数据,并逐个处理这些数据,而处理每个字节的数据要花上很多时间,可能会影响到下个数据的接收,而现在又没有大量的RAM来存储这些数据,那么有什么好的解决办法?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。