stm32芯片休眠模式_STM32F103 怎样进入睡眠模式及唤醒

本文介绍了如何使STM32F103进入睡眠模式并配置唤醒机制。通过设置SCB_SysCtrl寄存器的SLEEPONEXIT和SLEEPDEEP位,可以选择MCU在退出最低优先级中断后进入睡眠模式,并选择使用WFI或WFE指令进入。一旦进入睡眠模式,任何中断或事件都可以唤醒STM32。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*******************************************************************************

* Function Name  : PWR_EnterSLEEPMode

* Description    : Enters SLEEP mode.

* Input          : - SysCtrl_Set: Select the Sleep mode entry mechanism,.

*                    This parameter can be one of the following values:

*                       - 0: MCU enters Sleep mode as soon as WFI or WFE instruction is executed.

*                       - 1: MCU enters Sleep mode as soon as it exits the lowest priority ISR.

*

*                  - PWR_STOPEntry: specifies if SLEEP mode in entered with WFI or WFE instruction.

*                     This parameter can be one of the following values:

*                       - PWR_SLEEPEntry_WFI: enter STOP mode with WFI instruction

*                       - PWR_SLEEPEntry_WFE: enter STOP mode with WFE instruction

* Output         : None

* Return         : None

*******************************************************************************/

void PWR_EnterSLEEPMode(u32 SysCtrl_Set, u8 PWR_SLEEPEntry)

{

if (SysCtrl_Set)

*(vu32 *) SCB_SysCtrl |= SysCtrl_SLEEPONEXIT_Set;    // Set SLEEPONEXIT

else

*(vu32 *) SCB_SysCtrl &= ~SysCtrl_SLEEPONEXIT_Set;// Reset SLEEPONEXIT

*(vu32 *) SCB_SysCtrl &= ~SysCtrl_SLEEPDEEP_Set;    // Clear SLEEPDEEP bit

if(PWR_SLEEPEntry == PWR_SLEEPEntry_WFI)            // Select SLEEP mode entry

__WFI();                                        // Request Wait For Interrupt

else

__WFE();                                        // Request Wait For Event

}

任何中断和事件都能将STM32唤醒。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值