OpenEdv-开源电子网

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

我自己重新编了一个按键输入的程序,发现一直死在while循环里面出不来,求高手帮忙!

[复制链接]

3

主题

6

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2016-7-31
在线时间
4 小时
发表于 2016-8-7 09:52:58 | 显示全部楼层 |阅读模式
我自己重新编写了教程里面的按键输入实验,只将前两种判断改成调用两个函数,调用的函数里面我已经设置了入口参数啊,当判断是WKUP_PRES时yes=1,然后转到调用的函数一直执行while(led==1)下面的语句,当有其他按键按下时yse=0就可以跳出while(led==1)这个循环了啊,为什么会死在那里呢?附件里面有我的程序,希望哪位高手帮我看看怎么能实现判断是WKUP_PRES时就一直调用那个函数,当按到其他键时就执行其他的语句。
QQ截图20160807093342.png
QQ截图20160807093259.png

实验3 按键输入实验.rar

3.3 MB, 下载次数: 65

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3371
金钱
3371
注册时间
2015-1-7
在线时间
794 小时
发表于 2016-8-7 13:34:09 | 显示全部楼层
在你的while(led==1)中,不存在按键检测的操作,所以led的值不会发生改变,led==1将会一直成立,所以会一直死在这个while循环中。
按照你的思路,应该设置按键中断,并修改定义led为全局的volatile变量,在中断中修改led的值,这样就能实现你的预期效果;
机器生汇编,汇编生B,B生C,C生万物.... 经过长期对C语言的研究,目前只有两个方面不懂:这也不懂,那也不懂
https://github.com/ianhom
回复 支持 1 反对 0

使用道具 举报

3

主题

6

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2016-7-31
在线时间
4 小时
 楼主| 发表于 2016-8-7 10:03:34 | 显示全部楼层
上面那个压缩包有问题,这一个是我自己的

实验3 按键输入实验.rar

3.3 MB, 下载次数: 62

回复 支持 反对

使用道具 举报

32

主题

883

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4027
金钱
4027
注册时间
2015-11-14
在线时间
544 小时
发表于 2016-8-7 10:07:53 | 显示全部楼层
你都在死循环了怎么跳出来检测?
回复 支持 反对

使用道具 举报

32

主题

883

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4027
金钱
4027
注册时间
2015-11-14
在线时间
544 小时
发表于 2016-8-7 10:08:05 | 显示全部楼层
你都在死循环了怎么跳出来检测?
回复 支持 反对

使用道具 举报

3

主题

6

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2016-7-31
在线时间
4 小时
 楼主| 发表于 2016-8-7 14:35:13 | 显示全部楼层
ianhom 发表于 2016-8-7 13:34
在你的while(led==1)中,不存在按键检测的操作,所以led的值不会发生改变,led==1将会一直成立,所以会一 ...

非常感谢!你的建议建议非常有用,还有个问题,要是不用中断能实现我的想法吗?
回复 支持 反对

使用道具 举报

9

主题

538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3371
金钱
3371
注册时间
2015-1-7
在线时间
794 小时
发表于 2016-8-7 15:22:21 | 显示全部楼层
因为你的while(led == 1)中有延时,所以处理起来要麻烦一点点:
1、裸奔的环境下弄个状态机,把while(led == 1)中的操作分成几个状态:delay状态,控LED亮状态;控LED灭状态,这样相应的操作就是插入到外层的while(1)中,就可以检查按键状态。
2、上个事件驱动的调度内核+PT协程
3、上个rtos(ucos、freertos),分成几个任务可以实现
机器生汇编,汇编生B,B生C,C生万物.... 经过长期对C语言的研究,目前只有两个方面不懂:这也不懂,那也不懂
https://github.com/ianhom
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-28 00:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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