串口中断缓存,缓存输错!求解!

2019-08-13 19:04发布

1. 我手里有款激光传感器,需要STM32接收传感器数据。通过STM32给传感器发送指定命令后,激光传感器返回数据协议如下:
    起始帧以十六进制:0XA5,0X5A,0X05,0X00,0X00,0X40,0X81共7个字节作为数据其实判断。之后不断传回5个字节一个数据包的有用信息。
        2.为此,我通过串口2给传感器发送命令,并通过串口2中断接收传感器数据,并通过串口1与电脑通讯以判断数据正确性。首先采用串口2收一次就立即发送给串口1方式,在串口调试助手里能有效显示数据信息,代码和接受如下所示:
                                               /*main函数如下所示*/
int main(void)
 {
SystemInit();
delay_init(72);    
uart_init(115200);
NVIC_Configuration();
while(1)
{
RpCmd(RPLIDAR_CMD_FORCE_SCAN);//发送命令
delay_ms(1000); 
    for(m;m<128;m++)
    {printf("Buf[%d",m);
     printf("]=%02hhx ",USART2_RX_BUF[m]);
  }
                                               /***串口2中断函数如下:***/
void USART2_IRQHandler(void) {       
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)  //????????
{
  USART_ClearITPendingBit(USART2,USART_IT_RXNE);
Res2 =USART_ReceiveData(USART2);//
USART_SendData(USART1,Res2);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET){}
}
最终能正确输出结果:







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