这几天一直在测试程序,做了一个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;
} } }
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>