如何做到长按power键唤醒系统!?

Ricky_hu 2009-02-22 09:24:29
加精
产品有了新需求:要求长按power键3秒钟,系统进入suspend状态;再长按power键3秒钟,唤醒系统。长按3s让系统suspend这个很好做,但是长按3s唤醒系统就让我郁闷了,这个似乎是控制不了,把power键设置为唤醒源之后,只要短按power键中断上来,系统就被唤醒了,如何做到长按3s呢!?不知道大家有什么高招?

做延时肯定不行。目前我是在BSPPowerOn()函数中检测到了这个power键的唤醒中断后就轮询3s检测,如果power键一直处于按下状态就让系统唤醒,否则就一直轮询等待。但是这样做虽然表面上屏幕没有被点亮,但是系统实际上已经被唤醒了,已经恢复现场了,电流已经上来了,这种做法虽然满足了长按3s唤醒系统这个功能,但是一旦用户短按power键后,系统耗电电流就上来了,待机时间也就短了,这样显然不行。大家多给些意见吧!!感激不尽!!
...全文
1610 73 打赏 收藏 转发到动态 举报
写回复
用AI写文章
73 条回复
切换为时间正序
请发表友善的回复…
发表回复
lllchr88 2010-03-22
  • 打赏
  • 举报
回复
mark
rogs3210 2010-03-16
  • 打赏
  • 举报
回复
在bootloader里检测不就OK?
lan120576664 2009-12-24
  • 打赏
  • 举报
回复
思考了好久,
看看前人的帖子
获益良多
我也试试
3秒开机。嘿嘿
rejoice818 2009-07-26
  • 打赏
  • 举报
回复
学习,以前我这菜鸟也想过,长按关机做过,但是长按开机是怎样实现的,到现在还不知道,电源没有开启,用什么检测~RIC?定时检测?还是状态机?继续观察~
SworderAndy 2009-07-04
  • 打赏
  • 举报
回复
学习
ZHOUGE 2009-02-26
  • 打赏
  • 举报
回复
jf
surepretty 2009-02-26
  • 打赏
  • 举报
回复
mark
netehoney 2009-02-26
  • 打赏
  • 举报
回复
关注
Ricky_hu 2009-02-25
  • 打赏
  • 举报
回复
[Quote=引用 59 楼 gooogleman 的回复:]
引用 56 楼 Ricky_hu 的回复:
非常感谢大家的关注,这个问题已经搞定!!特别感谢hzdysymbol 的指点。目前功能已经ok,正在做疲劳测试。


恭喜,恭喜。疲劳测试一般用什么办法呢?
[/Quote]

同喜,同喜!非常感谢大家的关注和帮助!!

疲劳测试的方法很多,具体要看你测试的功能,可以写个小代码直接测试,也可以手动测试;我这个就是直接让测试人员手动测试了,不停的短按power键唤醒然后又睡下去,最后看长按看系统能不能起来,系统其它功能是否正常。
Ricky_hu 2009-02-25
  • 打赏
  • 举报
回复
[Quote=引用 62 楼 wangxin_801115 的回复:]
有个疑问,请教一下:所有这些都是在OEMPowerOff中完成的??
BSPPowerOn函数这个函数是在OEMPowerOff中吗??
我的BSP中貌似没有BSPPowerOn这个函数
BSPPowerOn这个函数是在什么时候被调用的??
[/Quote]

OEMPowerOff函数中前半部分是进入睡眠的代码,后半部分是唤醒后的代码。我的架构是这样的,不知道你的怎么样的,刚才也说了bsp不同,函数名以及代码结构也不相同的。
wangxin_801115 2009-02-25
  • 打赏
  • 举报
回复
有个疑问,请教一下:所有这些都是在OEMPowerOff中完成的??
BSPPowerOn函数这个函数是在OEMPowerOff中吗??
我的BSP中貌似没有BSPPowerOn这个函数
BSPPowerOn这个函数是在什么时候被调用的??
Ricky_hu 2009-02-25
  • 打赏
  • 举报
回复
搞定的方法就是按照hzdysymbol 的提示,我在BSPPowerOn函数中检测唤醒源,如果发现是短按唤醒的话,就直接再次调用BSPPowerOff函数以及XllpPmEnterSleep函数让系统进入睡眠,直到检测是长按唤醒才接着走唤醒流程让系统醒过来。这种方式就是在短按唤醒的时候电流会马上上来,但是又立刻回到几个mA了,应该说目的达到了,而且消耗电流也不大。

所有这些都是在OEMPowerOff中完成的,bsp不一样调用的函数名称可能不一样,有这种需求的兄弟,仔细看一下OEMPowerOff中的代码就应该能够搞定。如果实在搞不定,再单独和我详聊。
bubsy 2009-02-24
  • 打赏
  • 举报
回复
MARK
hzdysymbol 2009-02-24
  • 打赏
  • 举报
回复
[Quote=引用 42 楼 Ricky_hu 的回复:]
今天到下班的时候还没有搞定,明天继续搞!hzdysymbol 提供的方法有些难度,不太好做!
[/Quote]
这方法有什么难度?进Sleep的函数已经写好在那里,直接调用就可以了
我们在Bootloader里面也有做过,也可以正常进的
night_shen_moon 2009-02-24
  • 打赏
  • 举报
回复
虾米~~~
进来学习
pengpzy 2009-02-24
  • 打赏
  • 举报
回复
学习学习
davidzhang_coder 2009-02-24
  • 打赏
  • 举报
回复
具体怎么回事还不知道
gooogleman 2009-02-24
  • 打赏
  • 举报
回复
[Quote=引用 56 楼 Ricky_hu 的回复:]
非常感谢大家的关注,这个问题已经搞定!!特别感谢hzdysymbol 的指点。目前功能已经ok,正在做疲劳测试。
[/Quote]

恭喜,恭喜。疲劳测试一般用什么办法呢?
YNCMCHY 2009-02-24
  • 打赏
  • 举报
回复
能否提示搞定的方法?
huyanlin 2009-02-24
  • 打赏
  • 举报
回复
学习
加载更多回复(52)

19,504

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧