OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2767|回复: 4

麻烦大神帮忙解答下,非常谢谢!

[复制链接]

17

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
253
金钱
253
注册时间
2016-3-29
在线时间
96 小时
发表于 2016-7-23 09:48:03 | 显示全部楼层 |阅读模式
2金钱
        while(1)
        {
                t=KEY_Scan(0);
                if(t==KEY0_PRES)//KEY0按下
                {
                        LCD_ShowString(60,150,200,16,16,"Start Transimit....");
                        LCD_ShowString(60,170,200,16,16,"   %");//显示百分号
                        printf("\r\nDMA DATA:\r\n ");             
                    USART1->CR3=1<<7;           //使能串口1的DMA发送      
                        MYDMA_Enable(DMA1_Channel4);//开始一次DMA传输!          
                    //等待DMA传输完成,此时我们来做另外一些事,点灯
                    //实际应用中,传输数据期间,可以执行另外的任务
                    while(1)
                    {
                                if(DMA1->ISR&(1<<13))//等待通道4传输完成
                                {
                                        DMA1->IFCR|=1<<13;//清除通道4传输完成标志
                                        break;
                        }
                                pro=DMA1_Channel4->CNDTR;//得到当前还剩余多少个数据
                                pro=1-pro/((TEXT_LENTH+2)*100);//得到百分比          
                                pro*=100;      //扩大100倍
                                LCD_ShowNum(60,170,pro,3,16);          
                    }                            
                        LCD_ShowNum(60,170,100,3,16);//显示100%          
                        LCD_ShowString(60,150,200,16,16,"Transimit Finished!");//提示传送完成
                }
                i++;
                delay_ms(10);
                if(i==20)
                {
                        LED0=!LED0;//提示系统正在运行       
                        i=0;
                }                  
        }

这段代码中有两个while(1),while(1)是死循环进去后,出不来,请问怎么运行以下代码:
                LCD_ShowNum(60,170,100,3,16);//显示100%          
               LCD_ShowString(60,150,200,16,16,"Transimit Finished!");//提示传送完成
                       i++;
                delay_ms(10);
                if(i==20)
                {
                        LED0=!LED0;//提示系统正在运行       
                        i=0;
                }       
请大神帮忙解答下          

最佳答案

查看完整内容[请看2#楼]

找本C语言的书好好补习补习吧, 当” if(DMA1->ISR&(1
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

40

帖子

0

精华

高级会员

Rank: 4

积分
756
金钱
756
注册时间
2016-2-25
在线时间
137 小时
发表于 2016-7-23 09:48:04 | 显示全部楼层
找本C语言的书好好补习补习吧,
当” if(DMA1->ISR&(1<<13))//等待通道4传输完成“成立的时候,执行break语句,跳出最里层的while循环,
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11544
金钱
11544
注册时间
2014-4-1
在线时间
1315 小时
发表于 2016-7-23 10:09:25 | 显示全部楼层

没法运行。


回复

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-7-23 10:44:01 | 显示全部楼层
break语句出来
回复

使用道具 举报

17

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
253
金钱
253
注册时间
2016-3-29
在线时间
96 小时
 楼主| 发表于 2016-7-23 13:45:43 | 显示全部楼层
黎明前沉寂 发表于 2016-7-23 10:49
找本C语言的书好好补习补习吧,
当” if(DMA1->ISR&(1

哦哦,明白了,谢谢你
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 08:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表