计算机睡眠功能命令,使用WINDOWS命令行进入睡眠模式

注意:是进入“睡眠模式”,而不是“休眠模式”。

睡眠与休眠,都是保存操作系统的现场状态进入省电模式,唤醒之后又回到现场的一种技术。

睡眠:内存条带电,唤醒很快,但若在睡眠状态时断电,数据就会丢失。

休眠:内存条里的数据都写入硬盘,然后内存条断电,唤醒时把硬盘数据读入内存以恢复现场。唤醒速度较慢,但不怕断电。

混合休眠:内存条和硬盘同时保留数据,带电唤醒就读取内存里的数据,不带电唤醒就读硬盘里的数据。

可以利用睡眠模式和“任务计划”,使得机器在某个时间点进入睡眠,然后在另一个时间点被“任务计划”自动唤醒并执行批处理或VBS脚本,从而实现了睡眠和唤醒的全自动化操作,这样就能省电,也能延长机器的寿命。

本文介绍3种进入睡眠/休眠模式的命令行写法。

Windows仅允许硬件电源按钮,或“开始菜单/开始屏幕”电源按钮进入睡眠(待机)模式,并没有提供直接进入睡眠模式的命令行工具。

方法1:

如果你的PC上禁用了休眠模式,则可以使用以下命令进入睡眠模式:

rundll32.exe powrprof.dll,SetSuspendState 0,1,0

但是,如果你启用了休眠模式(默认情况下就是这样),以上命令将使PC休眠,而不是进入睡眠。因此需要这样写:

powercfg -h off

rundll32.exe powrprof.dll,SetSuspendState 0,1,0

powercfg -h on

第一行禁用了休眠模式,第二行使得PC进入睡眠状态,第三行再允许休眠模式。

注:第1行和第3行都需要管理员权限。

方法2:

创建纯文本文件sleep.ps1:

Add-Type -Assembly System.Windows.Forms

[System.Windows.Forms.Application]::SetSuspendState("Suspend", $false, $true)

再运行Powershell调用之,即进入睡眠模式:

powershell -File C:\your-path\sleep.ps1

如果报错说无权运行脚本,先运行这个命令(需管理员权限):

powershell Set-ExecutionPolicy RemoteSigned

方法3:

下载SysInternals的PsShutdown工具,此工具可以在不禁用休眠,也不用提升至管理员权限的情况下使PC进入睡眠状态,这也是优选的方法:

psshutdown.exe -d -t 0 -accepteula

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用库函数在STM32F103上使用WFE进入睡眠模式的示例代码: ```c #include "stm32f10x.h" int main(void) { // 初始化GPIO等外设 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); // 配置WFE唤醒事件 EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); EXTI_InitStructure.EXTI_Line = EXTI_Line0; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); // 进入睡眠模式 while(1) { PWR_EnterSleepMode(PWR_Regulator_ON, PWR_SLEEPEntry_WFE); } } // 中断处理函数 void EXTI0_IRQHandler(void) { // 唤醒事件处理 EXTI_ClearITPendingBit(EXTI_Line0); } ``` 在这个例子中,我们使用PA0引脚作为唤醒事件,当PA0引脚有上升沿信号时,会触发中断处理函数,唤醒CPU。注意,中断处理函数中必须清除相应的中断标志位,否则会一直触发中断。在主函数中,我们使用while循环不断进入睡眠模式,等待唤醒事件的发生。PWR_EnterSleepMode函数用于进入睡眠模式,第一个参数为电源配置,第二个参数为进入睡眠模式的方式,这里我们选择WFE方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值