/** ****************************************************************************** * File Name : RTC.c * Description : This file provides code for the configuration * of the RTC instances. ****************************************************************************** * @attention * *

© Copyright (c) 2020 STMicroelectronics. * All rights reserved.

* * This software component is licensed by ST under Ultimate Liberty license * SLA0044, the "License"; You may not use this file except in compliance with * the License. You may obtain a copy of the License at: * www.st.com/SLA0044 * ****************************************************************************** */ /* Includes ------------------------------------------------------------------*/ #include "rtc.h" /* USER CODE BEGIN 0 */ RTC_DateTypeDef currentDate; RTC_TimeTypeDef currentTime; RTC_DateTypeDef setDate; RTC_TimeTypeDef setTime; struct TIMER timer[TIMER_COUNT]; struct BLINK_TIMER blinker[BLINKER_COUNT]; struct BREATHE_TIMER breathe; struct FLICKER_TIMER flicker[FLICKER_COUNT]; /* USER CODE END 0 */ RTC_HandleTypeDef hrtc; /* RTC init function */ void MX_RTC_Init(void) { RTC_TimeTypeDef sTime = {0}; RTC_DateTypeDef sDate = {0}; /** Initialize RTC Only */ hrtc.Instance = RTC; hrtc.Init.HourFormat = RTC_HOURFORMAT_24; hrtc.Init.AsynchPrediv = 127; hrtc.Init.SynchPrediv = 255; hrtc.Init.OutPut = RTC_OUTPUT_DISABLE; hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH; hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN; if (HAL_RTC_Init(&hrtc) != HAL_OK) { Error_Handler(); } /* USER CODE BEGIN Check_RTC_BKUP */ /* USER CODE END Check_RTC_BKUP */ /** Initialize RTC and set the Time and Date */ sTime.Hours = 0; sTime.Minutes = 0; sTime.Seconds = 0; sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE; sTime.StoreOperation = RTC_STOREOPERATION_RESET; if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN) != HAL_OK) { Error_Handler(); } sDate.WeekDay = RTC_WEEKDAY_MONDAY; sDate.Month = RTC_MONTH_JANUARY; sDate.Date = 1; sDate.Year = 0; if (HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BIN) != HAL_OK) { Error_Handler(); } } void HAL_RTC_MspInit(RTC_HandleTypeDef* rtcHandle) { if(rtcHandle->Instance==RTC) { /* USER CODE BEGIN RTC_MspInit 0 */ /* USER CODE END RTC_MspInit 0 */ /* RTC clock enable */ __HAL_RCC_RTC_ENABLE(); /* USER CODE BEGIN RTC_MspInit 1 */ /* USER CODE END RTC_MspInit 1 */ } } void HAL_RTC_MspDeInit(RTC_HandleTypeDef* rtcHandle) { if(rtcHandle->Instance==RTC) { /* USER CODE BEGIN RTC_MspDeInit 0 */ /* USER CODE END RTC_MspDeInit 0 */ /* Peripheral clock disable */ __HAL_RCC_RTC_DISABLE(); /* USER CODE BEGIN RTC_MspDeInit 1 */ /* USER CODE END RTC_MspDeInit 1 */ } } /* USER CODE BEGIN 1 */ void timerEnable(uint8_t tmrIdx, uint32_t timeoutSpec) { timer[tmrIdx].timeoutSpec = timeoutSpec; timer[tmrIdx].isEnable = ON; } void timerDisable(uint8_t tmrIdx) { timer[tmrIdx].isEnable = OFF; } void timerRefresh(uint8_t tmrIdx) { timer[tmrIdx].startTime = HAL_GetTick(); timer[tmrIdx].isAlarm = OFF; } void blinkerTimeSet(uint8_t idx, uint16_t on, uint16_t off, uint16_t rest, uint8_t count) { blinker[idx].blinkOnSpec = on; blinker[idx].blinkOffSpec = off; blinker[idx].blinkRestSpec = rest; blinker[idx].blinkCountSpec = count; blinker[idx].blinkisFinish = OFF ; } void disblinkerTime (uint8_t idx) { blinker[idx].isOn = 0 ; // <- this function only set 1 times , No re-entry allowed in loop blinker[idx].blinkOnSpec = 0 ; blinker[idx].blinkOffSpec = 0 ; blinker[idx].blinkRestSpec = 0 ; blinker[idx].blinkCountSpec = 0 ; blinker[idx].blinkCount = 0 ; } void flickerTimeSet(uint8_t idx, uint16_t on, uint16_t off) { flicker[idx].OnSpec = on; flicker[idx].OffSpec = off; } void breatheTimeSet(uint16_t up, uint16_t down, uint16_t R_color, uint16_t G_color, uint16_t B_color, uint16_t W_color) { breathe.timeUp = up; breathe.timeDown = down; breathe.RGB[0] = R_color; breathe.RGB[1] = G_color; breathe.RGB[2] = B_color; breathe.RGB[3] = W_color; } void LedOnRGBSet(uint16_t R_color, uint16_t G_color, uint16_t B_color, uint16_t W_color) { Charger.led_pwm_duty[0] = R_color; Charger.led_pwm_duty[1] = G_color; Charger.led_pwm_duty[2] = B_color; Charger.led_pwm_duty[3] = W_color; } uint32_t timerGetTimePass(uint8_t tmrIdx) { return ((HAL_GetTick()-timer[tmrIdx].startTime)/1000); } /* USER CODE END 1 */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/