打印
[STM32F1]

STM32F103 跳不出while循环

[复制链接]
1154|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ch0094|  楼主 | 2016-3-15 14:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
高手指教 为何下面的程序中不加  delay_us(1);延时函数跳不出 while 循环, 加上delay_init(1);延时函数就能跳出循环,TouchP_X 、TouchP_Y是触摸屏触摸坐标。

void Menu1(void)
{  
        menum=1;               
        while(menum==1)
        {
                   delay_init(1);
                     if(TouchP_X<=1600&&TouchP_Y<1800&&TouchP_X>0&&TouchP_Y>0)
                  {                                                       
                     SysS=11;                                       
                     TouchP_X=0;
                     TouchP_Y=0;       
                     menum=2;                                        
                  }
               if(TouchP_X<=1600&&TouchP_Y>2200&&TouchP_X>0)
                {                                       
                    SysS=12;                                               
                    TouchP_X=0;
                    TouchP_Y=0;
                    menum=2;        
                }
             if(TouchP_X>2600&&TouchP_Y<1800&&TouchP_Y>0)
               {                                                                       
                   SysS=13;
                  TouchP_X=0;
                  TouchP_Y=0;
                  menum=2;                                       
               }
            if(TouchP_X>2600&&TouchP_Y>2200)
              {                                  
                  SysS=14;                                       
                 TouchP_X=0;
                 TouchP_Y=0;               
                  menum=2;                                       
               }                                        
                         
        }
}

沙发
Thethree| | 2016-3-15 14:57 | 只看该作者
单步调试一下看看menum的值的改变情况

使用特权

评论回复
板凳
ch0094|  楼主 | 2016-3-15 15:35 | 只看该作者
Thethree 发表于 2016-3-15 14:57
单步调试一下看看menum的值的改变情况

不加延时 menum 一直等于1

使用特权

评论回复
地板
gmm2015| | 2016-3-15 15:58 | 只看该作者
TouchP_X 、TouchP_Y的值有变化吗? 如果没有,那就是这两个值的采集程序有问题或者没工作。
这两个值的采集是在中断中完成的吗?如果不是,那这两个值应该就不会变化了。

使用特权

评论回复
5
ch0094|  楼主 | 2016-3-15 16:37 | 只看该作者
gmm2015 发表于 2016-3-15 15:58
TouchP_X 、TouchP_Y的值有变化吗? 如果没有,那就是这两个值的采集程序有问题或者没工作。
这两个值的采 ...

触摸就有变化

使用特权

评论回复
6
liuqingfn| | 2016-3-15 16:49 | 只看该作者
TouchP_X在1600到2600中间怎么办?

使用特权

评论回复
7
liuqingfn| | 2016-3-15 16:52 | 只看该作者
TouchP_Y在1800-2200又怎么办

使用特权

评论回复
8
gmm2015| | 2016-3-15 16:56 | 只看该作者
如楼上所述,触摸值变化范围不在你的 if 语句包含的范围之内

使用特权

评论回复
9
jinggx| | 2016-3-15 18:58 | 只看该作者
定义menum 为volitate类型试试吧。

使用特权

评论回复
10
dentsgot| | 2016-3-15 20:17 | 只看该作者
你这个程序只有触摸按键的时候才会将menum赋值吧

使用特权

评论回复
11
yingjiashu| | 2016-3-16 08:38 | 只看该作者
建议:1 if....if用if...else if 结构代替 ,
         2 触摸屏中断改为外部触发方式,并且中断优先级设置尽可能高;
         3 进入中断要保护,不要让中断发生时有可能修改变量参数等;
编程不是急功近利的事情,有的基本功还是要掌握的哦。希望能对你的问题有帮助。

使用特权

评论回复
12
qinweixing| | 2016-3-16 08:52 | 只看该作者
逻辑错误

使用特权

评论回复
13
westmas| | 2016-3-16 14:34 | 只看该作者
在menum前加修饰符volatile.或者将编译优化选项设为不优化.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝