OpenEdv-开源电子网

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

stm32f1 一个按键 进入停机,唤醒功能,遇到点问题。

[复制链接]

6

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2019-10-20
在线时间
31 小时
发表于 2020-10-22 09:33:42 | 显示全部楼层 |阅读模式
1金钱
参考了一下原子哥的例程,但是只能进去停机,不能唤醒是为什么
微信截图_20201022093250.png

最佳答案

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

你这是在外部中断函数里做唤醒功能啊? 这个按键按下了,触发中断进入中断处理函数,然后停机。没有退出中断函数,怎么能再次触发该中断服务函数呢? 另一个按键能触发唤醒,应该是中断优先级比这个高吧。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2020-1-14
在线时间
13 小时
发表于 2020-10-22 09:33:43 | 显示全部楼层
你这是在外部中断函数里做唤醒功能啊?
这个按键按下了,触发中断进入中断处理函数,然后停机。没有退出中断函数,怎么能再次触发该中断服务函数呢?
另一个按键能触发唤醒,应该是中断优先级比这个高吧。
回复

使用道具 举报

6

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2019-10-20
在线时间
31 小时
 楼主| 发表于 2020-10-22 09:38:01 | 显示全部楼层
顶一个
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2020-10-22 10:11:37 | 显示全部楼层
中断关了?
回复

使用道具 举报

5

主题

269

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1053
金钱
1053
注册时间
2020-5-11
在线时间
253 小时
发表于 2020-10-22 10:16:35 | 显示全部楼层
第一:先清除中断。第二:建议好好设计中断函数。看着您的中断函数有点臃肿
1603332928(1).jpg
回复

使用道具 举报

6

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2019-10-20
在线时间
31 小时
 楼主| 发表于 2020-10-22 11:21:40 | 显示全部楼层

没关啊,在主函数 while(1)里面进入停机是可以通过Key1 唤醒的。用Key1停机唤醒就不行了
回复

使用道具 举报

6

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2019-10-20
在线时间
31 小时
 楼主| 发表于 2020-10-22 11:26:31 | 显示全部楼层
thisisdemo 发表于 2020-10-22 10:16
第一:先清除中断。第二:建议好好设计中断函数。看着您的中断函数有点臃肿

就在中断函数里面检测按键按了几秒,然后去选择进去停机 还是 开机。
回复

使用道具 举报

6

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2019-10-20
在线时间
31 小时
 楼主| 发表于 2020-10-22 11:50:57 | 显示全部楼层
顶一下
回复

使用道具 举报

5

主题

269

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1053
金钱
1053
注册时间
2020-5-11
在线时间
253 小时
发表于 2020-10-22 13:24:05 | 显示全部楼层
嗯哼s 发表于 2020-10-22 11:26
就在中断函数里面检测按键按了几秒,然后去选择进去停机 还是 开机。

1:请试一下我说的先清除中断标志位。我图中有说明。
2:原子哥例程确实是做了三秒按键判断。我认为作为学习demo可以。实际项目中断要快进快出三秒显然有些太长了。
回复

使用道具 举报

6

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2019-10-20
在线时间
31 小时
 楼主| 发表于 2020-10-22 14:14:54 | 显示全部楼层
thisisdemo 发表于 2020-10-22 13:24
1:请试一下我说的先清除中断标志位。我图中有说明。
2:原子哥例程确实是做了三秒按键判断。我认为作为 ...

已尝试,但是还是不行,就算去掉了3秒检测,同一个按键还是只能停机,不能唤醒,用另一个按键或者用串口就可以唤醒。
回复

使用道具 举报

5

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2020-1-14
在线时间
13 小时
发表于 2020-10-22 15:00:02 | 显示全部楼层
你这是在外部中断函数里做唤醒功能啊?
这个按键按下了,触发中断进入中断处理函数,然后停机。没有退出中断函数,怎么能再次触发该中断服务函数呢?
另一个按键能触发唤醒,应该是中断优先级比这个高吧。
回复

使用道具 举报

5

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2020-1-14
在线时间
13 小时
发表于 2020-10-22 15:02:10 | 显示全部楼层
你这个功能,从逻辑上讲就是讲不通的。最好重新把逻辑理顺
回复

使用道具 举报

6

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2019-10-20
在线时间
31 小时
 楼主| 发表于 2020-10-22 15:28:09 | 显示全部楼层
yexiachensi11 发表于 2020-10-22 15:00
你这是在外部中断函数里做唤醒功能啊?
这个按键按下了,触发中断进入中断处理函数,然后停机。没有退出中 ...

是的,优先级比它高
回复

使用道具 举报

6

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2019-10-20
在线时间
31 小时
 楼主| 发表于 2020-10-22 15:30:22 | 显示全部楼层
yexiachensi11 发表于 2020-10-22 15:00
你这是在外部中断函数里做唤醒功能啊?
这个按键按下了,触发中断进入中断处理函数,然后停机。没有退出中 ...

原来是还没有退出中断函数。,谢谢大哥,应该怎么做呢
回复

使用道具 举报

6

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2019-10-20
在线时间
31 小时
 楼主| 发表于 2020-10-22 15:33:36 | 显示全部楼层
yexiachensi11 发表于 2020-10-22 15:00
你这是在外部中断函数里做唤醒功能啊?
这个按键按下了,触发中断进入中断处理函数,然后停机。没有退出中 ...

是不是在中断里给标志位,去while(1)执行停机和唤醒,这样就能退出中断函数了。
回复

使用道具 举报

5

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2020-1-14
在线时间
13 小时
发表于 2020-10-23 09:51:53 | 显示全部楼层
嗯哼s 发表于 2020-10-22 15:33
是不是在中断里给标志位,去while(1)执行停机和唤醒,这样就能退出中断函数了。

这是可行的。把中断的处理搬到大循环里做
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 18:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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