STM 32の待機とキー(目覚まし時計)起動試験
1524 ワード
省エネのため、今週は待機と目覚ましを振り回し、まず待機とボタンの目覚まし、Nマルチネット上の資料をダウンロードし、見た.
プログラムブラシ後、起動後3秒で待機状態に入り、PA 0対応のキーシステムを押して再起動し、3秒後に再び待機に入る.
目覚まし時計が初期化されているため、目覚まし時計に応答するコールバック関数を加えると、目覚まし時計が指定された時間に自動的に起動し、待機します.
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
",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秒で待機状態に入り、PA 0対応のキーシステムを押して再起動し、3秒後に再び待機に入る.
目覚まし時計が初期化されているため、目覚まし時計に応答するコールバック関数を加えると、目覚まし時計が指定された時間に自動的に起動し、待機します.
//
void HAL_RTC_AlarmAEventCallback(RTC_HandleTypeDef *hrtc)
{
EXTI0_1_IRQHandler();
}