新手上路
- 积分
- 26
- 金钱
- 26
- 注册时间
- 2020-10-20
- 在线时间
- 10 小时
|
我利用STM32CUBEMX的TICKLESS模式,将原有的睡眠模式改为停止模式,停止模式前宏代码为void PreSleepProcessing(uint32_t *ulExpectedIdleTime){
printf("Pre Sleep\n");
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;//关闭滴答定时器中断
(void)ulExpectedIdleTime;
/*此处可以关闭外设时钟进一步降低功耗*/
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_2);
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_4);
__HAL_RCC_GPIOE_CLK_DISABLE();
__HAL_RCC_GPIOF_CLK_DISABLE();
__HAL_RCC_GPIOH_CLK_DISABLE();
__HAL_RCC_GPIOA_CLK_DISABLE();
__HAL_RCC_USART1_CLK_DISABLE();
*ulExpectedIdleTime = 0;
HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON,PWR_STOPENTRY_WFI);
}
关闭了滴答定时器中断也清除了中断标志位。停止后对所有的时钟进行初始化
但是出现第一次停止并唤醒正常,但是在此停止后将立刻唤醒,并且一直如此 ,有没有大佬帮吗解答一下啊
|
|