STM32的待機與喚醒試驗

因爲要節能,這個星期折騰待機與喚醒,首先是待機與按鍵的喚醒,下載和看了N多網上的資料,千轉百回,還是官方資料靠譜。
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_DMA_Init();
MX_ADC_Init();
MX_LPUART1_UART_Init();
MX_USART1_UART_Init();
MX_RTC_Init();
HAL_RTC_MspInit(&hrtc);
GetCurrentDateTime();//得到當前的時間和日期
ITMP=(uint8_t)CurrentTime.Minutes+1;//設置爲當前的下一分鐘喚醒
RTC_Set_AlarmA(CurrentTime.Hours,ITMP,0);//重新設置鬧鐘
printf("CurrentTime :%02d:%02d:%02d\r\n",CurrentTime.Hours, CurrentTime.Minutes,CurrentTime.Seconds); //顯示時分秒
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0, GPIO_PIN_RESET);HAL_Delay(100);//亮
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0, GPIO_PIN_SET);HAL_Delay(100);//滅
WakeUp_Init();
while (1)
{
LED0_0;HAL_Delay (100); //GPIOB-0 15亮
LED1_0;HAL_Delay (100); //GPIOB-1 15亮
LED0_1;HAL_Delay (100); //GPIOB-0 15滅
LED1_1;HAL_Delay (100); //GPIOB-1 15滅
}
}

void WakeUp_Init(void)
{
SystemPower_Config();
if(__HAL_PWR_GET_FLAG(PWR_FLAG_SB) != RESET)
{
HAL_PWR_CLEAR_FLAG(PWR_FLAG_SB);
}
HAL_Delay(3000);
HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1);
HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);
HAL_PWR_EnterSTANDBYMode();
}
程序刷機後,啓動後3秒進入待機狀態,按下PA0對應的鍵系統再次啓動,3秒後再次進入待機。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章