1.了解問題
/*##-1- Configue LSE as RTC clock soucre ###################################*/ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI | RCC_OSCILLATORTYPE_LSE; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; RCC_OscInitStruct.LSEState = RCC_LSE_ON; RCC_OscInitStruct.LSIState = RCC_LSI_OFF; if(HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { Error_Handler(); } |
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC; PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE; if(HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) { Error_Handler(); } |
/*##-1- Configure the RTC peripheral #######################################*/ RtcHandle.Instance = RTC; /*##-2- Check if Data stored in BackUp register0: No Need to reconfigure RTC#*/ /* Read the BackUp Register 0 Data */ if(HAL_RTCEx_BKUPRead(&RtcHandle, RTC_BKP_DR0) != 0x32F2) { /* Configure RTC prescaler and RTC data registers */ /* RTC configured as follow: - Hour Format = Format 24 - Asynch Prediv = Value according to source clock - Synch Prediv = Value according to source clock - OutPut = Output Disable - OutPutPolarity = High Polarity - OutPutType = Open Drain */ RtcHandle.Init.HourFormat = RTC_HOURFORMAT_24; RtcHandle.Init.AsynchPrediv = RTC_ASYNCH_PREDIV; RtcHandle.Init.SynchPrediv = RTC_SYNCH_PREDIV; RtcHandle.Init.OutPut = RTC_OUTPUT_DISABLE; RtcHandle.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH; RtcHandle.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN; if(HAL_RTC_Init(&RtcHandle) != HAL_OK) { /* Initialization Error */ Error_Handler(); } /* Configure RTC Calendar */ |
RTC_CalendarConfig(); } else { /* Check if the Power On Reset flag is set */ if(__HAL_RCC_GET_FLAG(RCC_FLAG_PORRST) != RESET) { /* Power on reset occured: Turn LED2 on */ BSP_LED_On(LED2); } /* Check if Pin Reset flag is set */ if(__HAL_RCC_GET_FLAG(RCC_FLAG_PINRST) != RESET) { /* External reset occured: Turn LED4 on */ BSP_LED_On(LED4); } /* Enable the PWR clock */ __PWR_CLK_ENABLE(); /* Allow access to RTC */ HAL_PWR_EnableBkUpAccess(); /* Wait for RTC APB registers synchronisation */ if(HAL_RTC_WaitForSynchro(&RtcHandle) != HAL_OK) { /* synchronisation Error */ Error_Handler(); } /* Clear the RTC Alarm Flag */ __HAL_RTC_ALARM_CLEAR_FLAG(&RtcHandle,RTC_FLAG_ALRAF); /* Clear the EXTI Line 17 Pending bit (Connected internally to RTC Alarm) */ __HAL_RTC_EXTI_CLEAR_FLAG(RTC_EXTI_LINE_ALARM_EVENT); /* Clear Reset Flag */ __HAL_RCC_CLEAR_RESET_FLAGS(); } |
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |