[mw_shl_code=c,true]在做DMA实验,红色处的代码理解不太清楚,请赐教!~[/mw_shl_code]
[mw_shl_code=c,true]
[/mw_shl_code]
[mw_shl_code=c,true]while(1)
{
t=KEY_Scan();
if(t==1) //KEY0按下
{
LCD_ShowString(60,150,"Start Transimit....");
LCD_ShowString(60,170," %"); //显示百分号
printf("\n\nDMA DATA:\n");
USART1->CR3=1<<7; //使能串口1的DMA发送
MYDMA_Enable(DMA1_Channel4); //开始一次DAM传输
//等待DMA传输完成,此时我们来做另外一些事,点灯
//实际应用中,传输数据期间,可以执行另外的任务
while(1) //这里一直是真,那时怎样跳出来,执行后面显示100%的??? {
if(DMA1->ISR&(1<<13)) //等待通道4传输完成
{
DMA1->IFCR|=1<<13; //清除通道4传输完成标志
break;
}
pro=DMA1_Channel4->CNDTR; //等到当前还剩余多少个数据
pro=1-pro/5200; //等到百分比
pro*=100; //扩大100倍
LCD_ShowNum(60,170,pro,3,16);
}
LCD_ShowNum(60,170,100,3,16); //显示100%
LCD_ShowString(60,150,"Transimit Finished!");
}
i++;
delay_ms(10);
if(i==20)
{
LED0=!LED0; //提示系统正在运行
i=0;
}
}
[/mw_shl_code]
|