DMA串口发送偶尔出现发送完成标志一直为零的情况

2019-07-20 23:37发布

这几天一直在测试程序,做了一个DMA串口发送程序,发送数据给液晶屏,可是有时候会偶尔出现,DMA一直发送不完数据的情况,所以程序就死在查询这里了。以下是串口发送程序,每发送一次我就调用一次这个函数,可是有时候偶尔出现if(DMA1->ISR&(1<<13))这句为零的情况,我仿真了一下看了看是因为DMA1->ISR中HTIF4等于1(半传输标志)
TCIF4缺一直等于0.所以程序一直死在这里。不知道为什么会偶尔出现传输完成标志一直为零的情况?像这种情况应该怎么解决掉?因为程序出现之后就死机了

void OtherControl(uint id,int data)
{
while(1){
    if(DMA1->ISR&(1<<13))
   {
DMA1->IFCR|=1<<13;//清除通道4传输完成标志
  SendBuff[0]=0X5A;        SendBuff[1]=0XA5;
  SendBuff[2]=0X05;        SendBuff[3]=0X82;
  SendBuff[4]=(id>>8);        SendBuff[5]=id;
  SendBuff[6]=(data>>8);        SendBuff[7]=data;
  MYDMA_Enable(DMA1_Channel4,8);
  break;
}  }   }


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