Mercurial > public > ostc4
diff Small_CPU/Src/rtc.c @ 38:5f11787b4f42
include in ostc4 repository
author | heinrichsweikamp |
---|---|
date | Sat, 28 Apr 2018 11:52:34 +0200 |
parents | |
children | f0069f002c55 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Small_CPU/Src/rtc.c Sat Apr 28 11:52:34 2018 +0200 @@ -0,0 +1,206 @@ +/** + ****************************************************************************** + * @file rtc.c + * @author heinrichs weikamp gmbh + * @version V0.0.1 + * @date 10-Oct-2014 + * @brief Source code for rtc control + * + @verbatim + ============================================================================== + ##### How to use ##### + ============================================================================== + @endverbatim + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2015 heinrichs weikamp</center></h2> + * + ****************************************************************************** + */ +/* Includes ------------------------------------------------------------------*/ +#include "rtc.h" +#include "stm32f4xx_hal.h" +#include "stm32f4xx_hal_conf.h" +#include "baseCPU2.h" + +RTC_HandleTypeDef RTCHandle; + +static void RTC_Error_Handler(void); + + +void RTC_SetTime(RTC_TimeTypeDef stimestructure) +{ + + stimestructure.SubSeconds = 0; + stimestructure.TimeFormat = RTC_HOURFORMAT12_AM; + stimestructure.DayLightSaving = RTC_DAYLIGHTSAVING_NONE ; + stimestructure.StoreOperation = RTC_STOREOPERATION_RESET; + + if(HAL_RTC_SetTime(&RTCHandle, &stimestructure, FORMAT_BIN) != HAL_OK) + { + RTC_Error_Handler(); + } +} + + +void RTC_SetDate(RTC_DateTypeDef sdatestructure) +{ + if(HAL_RTC_SetDate(&RTCHandle, &sdatestructure, FORMAT_BIN) != HAL_OK) + { + RTC_Error_Handler(); + } +} + + +/* +static void RTC_CalendarConfig(void) +{ + RTC_DateTypeDef sdatestructure; + RTC_TimeTypeDef stimestructure; + + //##-1- Configure the Date ################################################# + // Set Date: Monday April 14th 2014 + sdatestructure.Year = 0; + sdatestructure.Month = RTC_MONTH_JANUARY; + sdatestructure.Date = 1; + sdatestructure.WeekDay = RTC_WEEKDAY_MONDAY; + + if(HAL_RTC_SetDate(&RTCHandle,&sdatestructure,FORMAT_BCD) != HAL_OK) + { + RTC_Error_Handler(); + } + + //##-2- Configure the Time ################################################# + // Set Time: 02:00:00 + stimestructure.Hours = 0; + stimestructure.Minutes = 0; + stimestructure.Seconds = 0; + stimestructure.DayLightSaving = RTC_DAYLIGHTSAVING_NONE ; + stimestructure.StoreOperation = RTC_STOREOPERATION_RESET; + + if(HAL_RTC_SetTime(&RTCHandle,&stimestructure,FORMAT_BCD) != HAL_OK) + { + RTC_Error_Handler(); + } + + //##-3- Writes a data in a RTC Backup data Register0 ####################### +// HAL_RTCEx_BKUPWrite(&RTCHandle,RTC_BKP_DR0,0x32F2); +} +*/ + + + /* ##-1- Configure the RTC peripheral ####################################### + 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 +*/ + + +void MX_RTC_init(void) +{ + + RTC_TimeTypeDef sTime; + RTC_DateTypeDef sDate; +// RTC_AlarmTypeDef sAlarm; + + /**Initialize RTC and set the Time and Date + */ + RTCHandle.Instance = RTC; + RTCHandle.Init.HourFormat = RTC_HOURFORMAT_24; + RTCHandle.Init.AsynchPrediv = 127; + RTCHandle.Init.SynchPrediv = 255; + RTCHandle.Init.OutPut = RTC_OUTPUT_DISABLE; + RTCHandle.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH; + RTCHandle.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN; + HAL_RTC_Init(&RTCHandle); + + sTime.Hours = 11; + sTime.Minutes = 0; + sTime.Seconds = 0; + sTime.SubSeconds = 0; + sTime.TimeFormat = RTC_HOURFORMAT12_AM; + sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE; + sTime.StoreOperation = RTC_STOREOPERATION_RESET; + HAL_RTC_SetTime(&RTCHandle, &sTime, FORMAT_BCD); + + sDate.WeekDay = RTC_WEEKDAY_SUNDAY; + sDate.Month = RTC_MONTH_FEBRUARY; + sDate.Date = 15; + sDate.Year = 17; + HAL_RTC_SetDate(&RTCHandle, &sDate, FORMAT_BCD); + + +/* + RTCHandle.Instance = RTC; + 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; + + HAL_RTC_Init(&RTCHandle); +*/ +} + + +void RTC_StopMode_2seconds(void) +{ + /* Enable Power Control clock */ + __HAL_RCC_PWR_CLK_ENABLE(); + + /* Disable Wake-up timer */ + HAL_RTCEx_DeactivateWakeUpTimer(&RTCHandle); + + /* Enable Wake-up timer */ + HAL_RTCEx_SetWakeUpTimer_IT(&RTCHandle, (0x1000-1), RTC_WAKEUPCLOCK_RTCCLK_DIV16); + + /* FLASH Deep Power Down Mode enabled */ + HAL_PWREx_EnableFlashPowerDown(); + + /*## Enter Stop Mode #######################################################*/ + HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); + + /* Configures system clock after wake-up from STOP: enable HSI, PLL and select + PLL as system clock source (HSI and PLL are disabled in STOP mode) */ + SYSCLKConfig_STOP(); + + HAL_RTCEx_DeactivateWakeUpTimer(&RTCHandle); +} + + +void RTC_Stop_11ms(void) +{ + /* Disable Wake-up timer */ + HAL_RTCEx_DeactivateWakeUpTimer(&RTCHandle); + + /* Enable Wake-up timer */ + HAL_RTCEx_SetWakeUpTimer_IT(&RTCHandle, (0x18-1), RTC_WAKEUPCLOCK_RTCCLK_DIV16); + + /* FLASH Deep Power Down Mode enabled */ + HAL_PWREx_DisableFlashPowerDown(); + + /*## Enter Stop Mode #######################################################*/ + HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON, PWR_STOPENTRY_WFI); + + /* Configures system clock after wake-up from STOP: enable HSI, PLL and select + PLL as system clock source (HSI and PLL are disabled in STOP mode) */ + SYSCLKConfig_STOP(); + + HAL_RTCEx_DeactivateWakeUpTimer(&RTCHandle); +} + + +static void RTC_Error_Handler(void) +{ + while(1); +} + + +/************************ (C) COPYRIGHT heinrichs weikamp *****END OF FILE****/