打印
[STM32F4]

stm32f411 如何通过USB指令唤醒?

[复制链接]
1975|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
log002|  楼主 | 2017-12-15 11:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
手册中讲到OTG_FS core interrupt register(OTG_FS_GINTSTS)这一章节。其中Bit31 WKUPINT.

有没有人用过这个功能?
沙发
dongnanxibei| | 2017-12-15 11:48 | 只看该作者
#define OTG_FS_GINTSTS_WKUPINT (1 << 31)

使用特权

评论回复
板凳
log002|  楼主 | 2017-12-15 13:57 | 只看该作者
dongnanxibei 发表于 2017-12-15 11:48
#define OTG_FS_GINTSTS_WKUPINT (1

我是想知道如何进入睡眠模式?

使用特权

评论回复
地板
xixi2017| | 2017-12-15 14:47 | 只看该作者
void PWR_EnterSleepMode(uint8_t PWR_SLEEPEntry); //睡眠模式
void PWR_EnterSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry);  //停机模式
void PWR_EnterSTANDBYMode(void);    //待机模式

使用特权

评论回复
5
xixi2017| | 2017-12-15 14:47 | 只看该作者
第一个PWR_Regulator是选择电源是否进入低功耗

#define PWR_Regulator_ON               //电源不进低功耗 唤醒基本没延迟
#define PWR_Regulator_LowPower         //电源进去低功耗 不过唤醒启动有一点延迟   

使用特权

评论回复
6
xixi2017| | 2017-12-15 14:48 | 只看该作者
第二个参数PWR_STOPEntry

#define PWR_STOPEntry_WFI              //中断唤醒
#define PWR_STOPEntry_WFE              //事件唤醒

使用特权

评论回复
7
xixi2017| | 2017-12-15 14:48 | 只看该作者
停机模式唤醒后自动选择系统内部时钟,看自己的应用是否需要重新配置;如果你的系统时钟是HSI或者HSE是要重新配置,一般都需要重新配置,直接调用系统时钟配置函数。
另外停机模式唤醒后,flash程序是从中断或事件开始执行的。

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);  //使能时钟
PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);

第一个参数要配置电源低功耗模式,第二个随你是中断唤醒还是事件唤醒,或者两者都要;

第二步你要把所有引脚IO口释放,全部配置成模拟输入状态,IO口几乎0消耗

使用特权

评论回复
8
log002|  楼主 | 2017-12-15 16:41 | 只看该作者
xixi2017 发表于 2017-12-15 14:48
停机模式唤醒后自动选择系统内部时钟,看自己的应用是否需要重新配置;如果你的系统时钟是HSI或者HSE是要重 ...

device端设置好之后,host端如何来挂起及唤醒?请指点下。

使用特权

评论回复
9
香水城| | 2017-12-15 17:02 | 只看该作者
对于HOST,通过操作相关寄存器让其进入suspend状态;
对于DEVICE,通过检查USB总线空闲无活动3ms后进入suspend状态;

对于suspend状态的HOST,可以操作寄存器令其自行退出suspend状态,并发出重启信号到总线上;如果DEVICE处于SUSPEND状态,它就可以被来自HOST的重启【RESUME】信号唤醒。

对于suspend状态的DEVICE,同样可以通过操作寄存器令其自行退出suspend状态,并发出远程唤醒信号到总线上;如果此时HOST处于suspend状态,它可以被来自DEVICE的远程唤醒信号【remote wakeup】唤醒。

使用特权

评论回复
10
643757107| | 2017-12-17 22:37 | 只看该作者
是不是有什么中断

使用特权

评论回复
11
log002|  楼主 | 2017-12-18 10:44 | 只看该作者
香水城 发表于 2017-12-15 17:02
对于HOST,通过操作相关寄存器让其进入suspend状态;
对于DEVICE,通过检查USB总线空闲无活动3ms后进入suspe ...

感谢版主的回复
谢谢

我去看一看host如何进入suspend

使用特权

评论回复
12
log002|  楼主 | 2017-12-18 10:45 | 只看该作者
643757107 发表于 2017-12-17 22:37
是不是有什么中断

按手册上说,唤醒后会有一个中断,
#define OTG_FS_GINTSTS_WKUPINT (1 << 31)

使用特权

评论回复
13
香水城| | 2017-12-18 16:21 | 只看该作者
log002 发表于 2017-12-18 10:45
按手册上说,唤醒后会有一个中断,
#define OTG_FS_GINTSTS_WKUPINT (1

是的,有相应的唤醒中断资源存在。你可以配置开启使用。

使用特权

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

本版积分规则

1

主题

5

帖子

0

粉丝