这两天研究了STM32的低功耗知识,低功耗里主要研究的是STM32的待机模式和停机模式。让单片机进入的待机模式和停机模式比较容易,实验中通过设置中断口PA1来响应待机和停机模式。
- void EXTI1_IRQHandler(void)
- {
- if(!GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1))
- {
- delay_ms(10);
- while(!GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1));
- if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1))
- {
- EXTI_ClearITPendingBit(EXTI_Line1);
- RTC_SetAlarm(RTC_GetCounter()+4); //设置4S后闹钟唤醒
- RTC_ITConfig(RTC_IT_ALR, ENABLE);//使能闹钟中断.
- RTC_WaitForLastTask();//等待上一次写RTC任务完成
- Standby(); //进入待机(停机)状态
- }
- }
- }
- void Standby()
- {
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR , ENABLE);//开电源管理时钟PWR_Regulator_LowPower
- PWR_WakeUpPinCmd(ENABLE);//使能唤醒引脚,默认PA0
- PWR_EnterSTANDBYMode();//进入待机
- //PWR_EnterSTOPMode(PWR_Regulator_ON, PWR_STOPEntry_WFI|PWR_STOPEntry_WFE);//进入停机
- }
进入的待机模式和停机模式很简单,基本一样。那么问题来了。
|