|
|
@@ -103,20 +103,6 @@ uint16_t randomFun() {
|
|
|
return rand() % RandomTimer + baseRandomTimer; //随机时间1分钟到3分钟之间随机数
|
|
|
}
|
|
|
|
|
|
-// 进入睡眠模式
|
|
|
-void EnterSleepMode(void)
|
|
|
-{
|
|
|
- // 确保所有外设操作完成
|
|
|
- HAL_Delay(10);
|
|
|
-
|
|
|
- // 清除所有挂起的中断,防止立即唤醒
|
|
|
- // __HAL_IRQ_CLEAR_PENDING(EXTI0_IRQn);
|
|
|
-
|
|
|
- // 进入睡眠模式,任何中断都能唤醒
|
|
|
- HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI);
|
|
|
- // 或者使用WFE指令:HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFE);
|
|
|
-}
|
|
|
-
|
|
|
void Device_Info_Init_Fun() {
|
|
|
deviceInfo.isOnline = FALSE;
|
|
|
deviceInfo.broadcast_type = BROADCAST_ALL;
|
|
|
@@ -219,45 +205,6 @@ int main(void)
|
|
|
MX_USART3_UART_Init();
|
|
|
MX_TIM4_Init();
|
|
|
MX_RTC_Init();
|
|
|
-
|
|
|
- /* 设置初始时间 */
|
|
|
- RTC_TimeTypeDef sTime = {0};
|
|
|
- RTC_DateTypeDef sDate = {0};
|
|
|
-
|
|
|
- sTime.Hours = 0x12;
|
|
|
- sTime.Minutes = 0x00;
|
|
|
- sTime.Seconds = 0x00;
|
|
|
- HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD);
|
|
|
-
|
|
|
- sDate.WeekDay = RTC_WEEKDAY_MONDAY;
|
|
|
- sDate.Month = RTC_MONTH_SEPTEMBER;
|
|
|
- sDate.Date = 0x16;
|
|
|
- sDate.Year = 0x25;
|
|
|
- HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BCD);
|
|
|
-
|
|
|
- /* 设置第一次闹钟:20 秒后触发 */
|
|
|
- RTC_AlarmTypeDef sAlarm = {0};
|
|
|
- sAlarm.AlarmTime.Hours = sTime.Hours;
|
|
|
- sAlarm.AlarmTime.Minutes = sTime.Minutes;
|
|
|
- sAlarm.AlarmTime.Seconds = (sTime.Seconds + 20) % 60;
|
|
|
- // sAlarm.AlarmMask = 0;
|
|
|
- sAlarm.Alarm = RTC_ALARM_A;
|
|
|
-
|
|
|
- HAL_RTC_SetAlarm_IT(&hrtc, &sAlarm, RTC_FORMAT_BCD);
|
|
|
-
|
|
|
-
|
|
|
- while (TRUE) {
|
|
|
- // HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI);
|
|
|
- HAL_SuspendTick(); // 停止 SysTick 中断
|
|
|
- __WFI(); // 真正进入 Sleep
|
|
|
- HAL_ResumeTick(); // 唤醒后恢复 SysTick
|
|
|
- printf("wwww122\r\n");
|
|
|
- break;
|
|
|
- }
|
|
|
- while (TRUE) {
|
|
|
- printf("111\r\n");
|
|
|
- HAL_Delay(1000);
|
|
|
- }
|
|
|
/* USER CODE BEGIN 2 */
|
|
|
// 启动 USART2 DMA 接收
|
|
|
HAL_UART_Receive_DMA(&huart3, rx_buf, sizeof(rx_buf));
|
|
|
@@ -302,7 +249,7 @@ int main(void)
|
|
|
srand(HAL_GetTick());
|
|
|
// HAL_TIM_Base_Start(&htim4);
|
|
|
/* USER CODE END 2 */
|
|
|
-
|
|
|
+ RTC_Sleep_Enter_Fun();
|
|
|
/* Infinite loop */
|
|
|
/* USER CODE BEGIN WHILE */
|
|
|
printf("Device is ready\r\n");
|