summaryrefslogtreecommitdiffstatshomepage
path: root/stmhal/stm32f4xx_hal_msp.c
diff options
context:
space:
mode:
Diffstat (limited to 'stmhal/stm32f4xx_hal_msp.c')
-rw-r--r--stmhal/stm32f4xx_hal_msp.c62
1 files changed, 62 insertions, 0 deletions
diff --git a/stmhal/stm32f4xx_hal_msp.c b/stmhal/stm32f4xx_hal_msp.c
index 6ab992a63c..f5611e1082 100644
--- a/stmhal/stm32f4xx_hal_msp.c
+++ b/stmhal/stm32f4xx_hal_msp.c
@@ -94,6 +94,68 @@ void HAL_MspDeInit(void) {
}
/**
+ * @brief RTC MSP Initialization
+ * This function configures the hardware resources used in this example
+ * @param hrtc: RTC handle pointer
+ *
+ * @note Care must be taken when HAL_RCCEx_PeriphCLKConfig() is used to select
+ * the RTC clock source; in this case the Backup domain will be reset in
+ * order to modify the RTC Clock source, as consequence RTC registers (including
+ * the backup registers) and RCC_BDCR register are set to their reset values.
+ *
+ * @retval None
+ */
+void HAL_RTC_MspInit(RTC_HandleTypeDef *hrtc)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct;
+ RCC_PeriphCLKInitTypeDef PeriphClkInitStruct;
+
+ /* To change the source clock of the RTC feature (LSE, LSI), You have to:
+ - Enable the power clock using __PWR_CLK_ENABLE()
+ - Enable write access using HAL_PWR_EnableBkUpAccess() function before to
+ configure the RTC clock source (to be done once after reset).
+ - Reset the Back up Domain using __HAL_RCC_BACKUPRESET_FORCE() and
+ __HAL_RCC_BACKUPRESET_RELEASE().
+ - Configure the needed RTc clock source */
+
+ /*##-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();
+ return;
+ }
+
+ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC;
+ PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
+ if(HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
+ {
+ //Error_Handler();
+ return;
+ }
+
+ /*##-2- Enable RTC peripheral Clocks #######################################*/
+ /* Enable RTC Clock */
+ __HAL_RCC_RTC_ENABLE();
+}
+
+/**
+ * @brief RTC MSP De-Initialization
+ * This function frees the hardware resources used in this example:
+ * - Disable the Peripheral's clock
+ * @param hrtc: RTC handle pointer
+ * @retval None
+ */
+void HAL_RTC_MspDeInit(RTC_HandleTypeDef *hrtc)
+{
+ /*##-1- Reset peripherals ##################################################*/
+ __HAL_RCC_RTC_DISABLE();
+}
+
+/**
* @}
*/