j=sizeof(TEXT_TO_SEND);
for(i=0;i<5200;i++)//填充ASCII字符集数据
{
if(t>=j)//加入换行符
{
if(mask)
{
SendBuff=0x0a;
t=0;
}else
{
SendBuff=0x0d;
mask++;
}
}else//复制TEXT_TO_SEND语句
{
mask=0;
SendBuff=TEXT_TO_SEND[t];
t++;
}
}
  OINT_COLOR=BLUE;//设置字体为蓝色
i=0;
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发送
在执行完for循环后,t的值为0x00000020,因此个人觉得为了不出什么意外,在while(1)前应该重新给 t 赋值0,虽然原来的程序在实际执行的过程没发现什么问题。
此外,为何在软件仿真的时候,不管 t 是否重新赋值为0,在执行了 t=KEY_Scan() 之后t的值都为1 !为什么,实际没有模拟按键输入,就应该一直为0才是,这里想不明白.
最后,不知道谁有DMA串口接收数据并且成功的例程,能否给一份看下,我自己看手册研究了好长时间,总是无法成功,我都郁闷死了……
|