打印

STM32做USB怎么远程唤醒PC?

[复制链接]
8015|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
用官方的鼠标例程,在配置描述符里已经默认设置了远程唤醒。可以正常模拟鼠标动作。但是我电脑睡眠后,无法唤醒电脑。普通的USB鼠标或者键盘随便按个键就可以了。是不是还要设置哪个标志位才行的?刚玩,希望大家不吝赐教。
沙发
香水城| | 2013-5-22 17:45 | 只看该作者
那也要PC使能了被鼠标远程唤醒的功能呀,我记得是在bios里有设置的。

使用特权

评论回复
板凳
77251380|  楼主 | 2013-5-22 17:50 | 只看该作者
香水城 发表于 2013-5-22 17:45
那也要PC使能了被鼠标远程唤醒的功能呀,我记得是在bios里有设置的。

PC是可以的,我用普通的USB鼠标或者键盘随便点下就唤醒了。但是我用STM32做的红外触摸板不行。有按了左键。

使用特权

评论回复
地板
cjhk| | 2013-5-22 19:04 | 只看该作者
远程唤醒   感觉不是很可靠   再看看别人的意见

使用特权

评论回复
5
txcy| | 2013-5-22 19:07 | 只看该作者
香水城 发表于 2013-5-22 17:45
那也要PC使能了被鼠标远程唤醒的功能呀,我记得是在bios里有设置的。

在bios里好像是有设置的

使用特权

评论回复
6
香水城| | 2013-5-22 21:39 | 只看该作者
ST官方的鼠标例程是可以远程唤醒PC的,我跑过的。

我记得是按键KEY按下,在对应EXTI中断中发出resume信号,从而唤醒休眠的PC的。

使用特权

评论回复
7
77251380|  楼主 | 2013-5-23 00:09 | 只看该作者
香水城 发表于 2013-5-22 21:39
ST官方的鼠标例程是可以远程唤醒PC的,我跑过的。

我记得是按键KEY按下,在对应EXTI中断中发出resume信号 ...

我也觉得这个应该是例程里有的,毕竟这也是鼠标的基本功能。但是睡眠时,一样往上发左键加坐标,PC就是不响应,很纳闷。EXTI中断中发出resume信号,这个具体是在哪段代码呢?香主能稍微抽点时间帮我指导一下吗?拜谢拜谢

使用特权

评论回复
8
77251380|  楼主 | 2013-5-23 00:11 | 只看该作者
txcy 发表于 2013-5-22 19:07
在bios里好像是有设置的

BIOS是设置ACIP电源管理吧,这个是开了的,要不然普通的键盘鼠标也不能唤醒了。我的问题是我做的触摸板唤醒不了,普通的USB鼠标键盘可以。

使用特权

评论回复
9
香水城| | 2013-5-23 10:09 | 只看该作者
77251380 发表于 2013-5-23 00:09
我也觉得这个应该是例程里有的,毕竟这也是鼠标的基本功能。但是睡眠时,一样往上发左键加坐标,PC就是不 ...

例程是基于ST EVAL板子的。我曾今跑过STM3210E-EVAL板,系统休眠后可以通过按KEY键(不是joystick的方向键)来远程唤醒PC。

具体的代码就是:按键KEY按下--> EXTI9_5_IRQHandler() --> Rsume(RESUME_INTERNAL)-->Resume_Init():退出USB模块的低功耗模式,重新配置时钟等。此时MCU已被唤醒,而主机还没有开始通信,就是说MCU在继续等待SOF信号的过程中又失望了,于是又触发到了ESOF中断(USB的中断之一)

在USB_ISR中的ESOF case中,Resume(RESUME_ESOF),直到在Resume()中的RESUME_START case中使用【wCNTR |= CNTR_RESUME;】来使得MCU发出resume信号,然后在RESUME_ON case中计数,直到过了10ms后,撤销resume信号。

使用特权

评论回复
10
77251380|  楼主 | 2013-5-23 12:02 | 只看该作者
香水城 发表于 2013-5-23 10:09
例程是基于ST EVAL板子的。我曾今跑过STM3210E-EVAL板,系统休眠后可以通过按KEY键(不是joystick的方向 ...

我是直接在MAIN函数里面while循环Rsume(RESUME_INTERNAL),没用中断。PC睡眠时MCU照常工作。按道理应该是一直发出唤醒信号的。那主机应该睡眠不了才对。还是搞不懂为什么不行。

使用特权

评论回复
11
香水城| | 2013-5-23 13:26 | 只看该作者
77251380 发表于 2013-5-23 12:02
我是直接在MAIN函数里面while循环Rsume(RESUME_INTERNAL),没用中断。PC睡眠时MCU照常工作。按道理应该是 ...

你确定MCU发出了唤醒信号?

在【wCNTR |= CNTR_RESUME;】这个操作处打个断点,能运行到那里么?

使用特权

评论回复
12
77251380|  楼主 | 2013-5-23 15:10 | 只看该作者
香水城 发表于 2013-5-23 13:26
你确定MCU发出了唤醒信号?

在【wCNTR |= CNTR_RESUME;】这个操作处打个断点,能运行到那里么? ...




单步调试的,确实有运行到这。

使用特权

评论回复
13
hawksabre| | 2013-5-23 20:14 | 只看该作者
帮楼主   顶一个   学习帖子   需要好好消化消化   顶一个

使用特权

评论回复
14
77251380|  楼主 | 2013-5-24 08:57 | 只看该作者
问题解决了。多谢各位帮忙。
用STM32的鼠标例程,会跟着PC睡眠也进入suspend,低功耗模式下只响应各种中断。例程是利用一个按键引发外部中断,再由中断响应做唤醒动作。我做的设备没有设计这种按键,所以不能suspend。而且不能在PC没有进入睡眠状态的时候进行远程唤醒动作,这样会导致远程唤醒失效。我是利用fSuspendEnabled做判断。

使用特权

评论回复
15
kbw512| | 2014-9-29 22:06 | 只看该作者
楼主,我测试了那个鼠标程序也不可以唤醒哦。。。很奇怪。。。普通的鼠标都可以。。。能指教下吗?谢谢!

使用特权

评论回复
16
kbw512| | 2014-9-29 22:09 | 只看该作者
香水城 发表于 2013-5-23 10:09
例程是基于ST EVAL板子的。我曾今跑过STM3210E-EVAL板,系统休眠后可以通过按KEY键(不是joystick的方向 ...

香主方便把你说的那个里程发我看下吗,,,搞了好久咯,,,搞不定 嘿嘿

使用特权

评论回复
17
香水城| | 2014-9-30 18:19 | 只看该作者
kbw512 发表于 2014-9-29 22:09
香主方便把你说的那个里程发我看下吗,,,搞了好久咯,,,搞不定 嘿嘿 ...

置顶帖(官网STM32 USB资料汇总 + USB培训资料(6月20日更新))里有下载链接。

使用特权

评论回复
18
laughmen| | 2015-8-5 23:06 | 只看该作者
mark,谢谢

使用特权

评论回复
19
nitu| | 2017-9-10 14:12 | 只看该作者
楼主你这个问题解决了没有?

使用特权

评论回复
20
nitu| | 2017-9-10 14:51 | 只看该作者
楼主可以上传这部份代码、十分感谢啊。

使用特权

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

本版积分规则

2

主题

13

帖子

1

粉丝