Explorar el Código

添加闹钟,未成功,

xuxinyi hace 2 meses
padre
commit
bcc0463af6
Se han modificado 5 ficheros con 34 adiciones y 3 borrados
  1. 1 0
      Core/Inc/stm32f1xx_it.h
  2. 13 1
      Core/Src/main.c
  3. 3 0
      Core/Src/stm32f1xx_hal_msp.c
  4. 15 1
      Core/Src/stm32f1xx_it.c
  5. 2 1
      lora_bl.ioc

+ 1 - 0
Core/Inc/stm32f1xx_it.h

@@ -60,6 +60,7 @@ void DMA1_Channel3_IRQHandler(void);
 void TIM3_IRQHandler(void);
 void USART2_IRQHandler(void);
 void USART3_IRQHandler(void);
+void RTC_Alarm_IRQHandler(void);
 /* USER CODE BEGIN EFP */
 
 /* USER CODE END EFP */

+ 13 - 1
Core/Src/main.c

@@ -152,7 +152,15 @@ int main(void)
   const char *lora_msg = "AT+OPTION=3,0";
   HAL_UART_Transmit(&huart2, (uint8_t *)lora_msg, strlen(lora_msg), HAL_MAX_DELAY);
 
-  int i = 0;
+
+
+
+  RTC_AlarmTypeDef test = {0};
+  test.Alarm = RTC_ALARM_A;
+  myTime.Minutes = myTime.Minutes + 1;
+  test.AlarmTime.Minutes = myTime.Minutes;
+  // 首次启用闹钟A(若CubeMX未自动启用)
+  HAL_RTC_SetAlarm_IT(&hrtc, &test, RTC_FORMAT_BIN);
   // uint8_t i = 0xaa;
   /* USER CODE END 2 */
 
@@ -193,6 +201,10 @@ int main(void)
     minute = myTime.Minutes;
     second = myTime.Seconds;
     printf("time: %02d:%02d:%02d\r\n", hour, minute, second);
+    RTC_TimeTypeDef sCurrTime;
+    HAL_RTC_GetTime(&hrtc, &sCurrTime, RTC_FORMAT_BIN);
+    printf("1分钟提醒触发!当前时间:%02d:%02d:%02d\r\n",
+           sCurrTime.Hours, sCurrTime.Minutes, sCurrTime.Seconds);
     // printf("main task\r\n");
     HAL_Delay(2000);
     /* USER CODE BEGIN 3 */

+ 3 - 0
Core/Src/stm32f1xx_hal_msp.c

@@ -103,6 +103,8 @@ void HAL_RTC_MspInit(RTC_HandleTypeDef* hrtc)
     /* RTC interrupt Init */
     HAL_NVIC_SetPriority(RTC_IRQn, 0, 0);
     HAL_NVIC_EnableIRQ(RTC_IRQn);
+    HAL_NVIC_SetPriority(RTC_Alarm_IRQn, 0, 0);
+    HAL_NVIC_EnableIRQ(RTC_Alarm_IRQn);
     /* USER CODE BEGIN RTC_MspInit 1 */
 
     /* USER CODE END RTC_MspInit 1 */
@@ -129,6 +131,7 @@ void HAL_RTC_MspDeInit(RTC_HandleTypeDef* hrtc)
 
     /* RTC interrupt DeInit */
     HAL_NVIC_DisableIRQ(RTC_IRQn);
+    HAL_NVIC_DisableIRQ(RTC_Alarm_IRQn);
     /* USER CODE BEGIN RTC_MspDeInit 1 */
 
     /* USER CODE END RTC_MspDeInit 1 */

+ 15 - 1
Core/Src/stm32f1xx_it.c

@@ -230,7 +230,6 @@ void DMA1_Channel3_IRQHandler(void)
 
   /* USER CODE END DMA1_Channel3_IRQn 0 */
   HAL_DMA_IRQHandler(&hdma_usart3_rx);
-  printf("我是RTC中断\r\n");
   /* USER CODE BEGIN DMA1_Channel3_IRQn 1 */
 
   /* USER CODE END DMA1_Channel3_IRQn 1 */
@@ -300,6 +299,21 @@ void USART3_IRQHandler(void)
   /* USER CODE END USART3_IRQn 1 */
 }
 
+/**
+  * @brief This function handles RTC alarm interrupt through EXTI line 17.
+  */
+void RTC_Alarm_IRQHandler(void)
+{
+  /* USER CODE BEGIN RTC_Alarm_IRQn 0 */
+  printf("1111111111111111111111111");
+  /* USER CODE END RTC_Alarm_IRQn 0 */
+  HAL_RTC_AlarmIRQHandler(&hrtc);
+
+  /* USER CODE BEGIN RTC_Alarm_IRQn 1 */
+
+  /* USER CODE END RTC_Alarm_IRQn 1 */
+}
+
 /* USER CODE BEGIN 1 */
 
 /* USER CODE END 1 */

+ 2 - 1
lora_bl.ioc

@@ -57,6 +57,7 @@ NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
 NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
 NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
 NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
+NVIC.RTC_Alarm_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
 NVIC.RTC_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
 NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
 NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false
@@ -118,7 +119,7 @@ ProjectManager.ToolChainLocation=
 ProjectManager.UAScriptAfterPath=
 ProjectManager.UAScriptBeforePath=
 ProjectManager.UnderRoot=false
-ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_USART1_UART_Init-USART1-false-HAL-true,5-MX_USART2_UART_Init-USART2-false-HAL-true,6-MX_USART3_UART_Init-USART3-false-HAL-true
+ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_USART1_UART_Init-USART1-false-HAL-true,5-MX_USART2_UART_Init-USART2-false-HAL-true,6-MX_USART3_UART_Init-USART3-false-HAL-true,7-MX_RTC_Init-RTC-false-HAL-true
 RCC.ADCFreqValue=18000000
 RCC.AHBCLKDivider=RCC_SYSCLK_DIV2
 RCC.AHBFreq_Value=36000000