做串口DMA+空闲中断接收,接收到的数据前四个字节为0

2019-07-20 10:17发布

用的阿波罗STM32F767开发板,做串口1DMA+空闲中断接收,发现数据可以接收到,接收的数量也是对的,但接收到数据缓存的数据前四位为0,有没有大神遇到过,该怎样解决??? IMG_3002.JPG

//串口1中断服务函数如下
void USART1_IRQHandler(Void)
{
      u8 len;
      u16 temp;
      if((__HAL_UART_GET_FLAG(&UART1_Handler,UART_FLAG_IDLE)!=RESET))                        //接收到了串口空闲中断
      {
            temp=USART1_ISR;
            temp=USART1_RDR;
            CLEAR_BIT(USART1->ISR,UART_FLAG_RXNE);
            HAL_UART_DMAStop(&UART1_Handler);                                                                //关闭DMA
            __HAL_UART_CLEAR_IDLEFLAG(&UART1_Handler);                                                 //清除空闲中断标志
            num=__HAL_DMA_GET_COUNtER(&UART1RxDMA_Handler);                                    //获取接收剩余数量
        }
}

//KEY0按下一次,开启一次DMA接收
//串口发送数据dddddddfghsjsjsj,进入串口中断服务函数,关闭DMA
//数据接收到了,但前四个字节的数据均为0,丢失了
//主函数
int main(void)
{
     while(1)
    {
          t=KEY_Scan(0);
          if(t==KEY0_PRES)                \KEY0按下
          {
                HAL——UART_Receive_DMA(&UART1_Handler,ReceiveBuff,sizeof(ReceiveBuff));   //开启DMA接收

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