码迷,mamicode.com
首页 > 其他好文 > 详细

STM32的停机模式与唤醒

时间:2019-06-07 22:57:03      阅读:378      评论:0      收藏:0      [点我收藏+]

标签:parameter   inter   strong   sds   exti   val   work   usart   res   

HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_DMA_Init(); MX_ADC_Init(); MX_LPUART1_UART_Init(); MX_USART1_UART_Init(); MX_RTC_Init(); WorkFinished=0;//工作没有完成 while(1) { LED1_ON; LED2_ON; LED3_ON;HAL_Delay (500); printf ("Before Stop \r\n"); if(WorkFinished){ HAL_PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);//进入停止模式 } LED1_OFF; LED2_OFF; LED3_OFF; printf ("After Stop \r\n"); }

//用于停机模式的声明
#define PWR_Regulator_LowPower ((uint32_t)0x00000001)
#define PWR_STOPEntry_WFI ((uint8_t)0x01)

void HAL_PWR_EnterSTOPMode(uint32_t Regulator, uint8_t STOPEntry)
{
uint32_t tmpreg = 0U;
/ Check the parameters /
assert_param(IS_PWR_REGULATOR(Regulator));
assert_param(IS_PWR_STOP_ENTRY(STOPEntry));
/ Select the regulator state in Stop mode ---------------------------------/
tmpreg = PWR->CR;
/ Clear PDDS and LPDS bits /
CLEAR_BIT(tmpreg, (PWR_CR_PDDS | PWR_CR_LPSDSR));
/ Set LPSDSR bit according to PWR_Regulator value /
SET_BIT(tmpreg, Regulator);
/ Store the new value /
PWR->CR = tmpreg;
/ Set SLEEPDEEP bit of Cortex System Control Register /
SET_BIT(SCB->SCR, SCB_SCR_SLEEPDEEP_Msk);
/ Select Stop mode entry --------------------------------------------------/
if(STOPEntry == PWR_STOPENTRY_WFI)
{
/ Request Wait For Interrupt /
WFI();
}
else
{
/ Request Wait For Event /
SEV();
WFE();
WFE();
}
/ Reset SLEEPDEEP bit of Cortex System Control Register /
CLEAR_BIT(SCB->SCR, SCB_SCR_SLEEPDEEP_Msk);
}

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
WorkFinished=~WorkFinished;
SystemClock_Config();
printf ("Callback \r\n"); //外设中断 打印
}

程序正常启动后三个灯闪烁(PB12|PB13|PB14),按键后进入停机模式,再按键程序继续执行,再按键停机。

停机模式下耗电:148uA。

STM32的停机模式与唤醒

标签:parameter   inter   strong   sds   exti   val   work   usart   res   

原文地址:https://blog.51cto.com/dawn0919/2406270

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!