因?yàn)橐?jié)能,這個(gè)星期折騰待機(jī)與喚醒,首先是待機(jī)與按鍵的喚醒,下載和看了N多網(wǎng)上的資料,千轉(zhuǎn)百回,還是官方資料靠譜,參考著做成功了,即待機(jī)后按鍵喚醒(鬧鐘也可以)。
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();//得到當(dāng)前的時(shí)間和日期
ITMP=(uint8_t)CurrentTime.Minutes+1;//設(shè)置為當(dāng)前的下一分鐘喚醒
RTC_Set_AlarmA(CurrentTime.Hours,ITMP,0);//重新設(shè)置鬧鐘
printf("CurrentTime :%02d:%02d:%02d\r\n",CurrentTime.Hours, CurrentTime.Minutes,CurrentTime.Seconds); //顯示時(shí)分秒
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滅
}
}
站在用戶的角度思考問題,與客戶深入溝通,找到昭平網(wǎng)站設(shè)計(jì)與昭平網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名與空間、虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋昭平地區(qū)。
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();
}
程序刷機(jī)后,啟動(dòng)后3秒進(jìn)入待機(jī)狀態(tài),按下PA0對(duì)應(yīng)的鍵系統(tǒng)再次啟動(dòng),3秒后再次進(jìn)入待機(jī)。
因?yàn)樯厦嬉呀?jīng)初始化了鬧鐘,那么加上響應(yīng)鬧鐘的回調(diào)函數(shù),系統(tǒng)也會(huì)在到達(dá)鬧鐘指定時(shí)間自動(dòng)啟動(dòng),然后再待機(jī)。
//回調(diào)函數(shù)
void HAL_RTC_AlarmAEventCallback(RTC_HandleTypeDef *hrtc)
{
EXTI0_1_IRQHandler();
}