#include "FM_RTC.h" extern RTC_HandleTypeDef hrtc; /** * @brief 初始化rtc * @param * @retval */ void FM_RTC_Init(void) { HD_RTC_Init(); } /** * @brief 设置rtc时间 * @param * @retval */ void setRTC_Time(timeInfo *time) { /* 日期结构体 */ static RTC_DateTypeDef setData; /* 时间结构体 */ static RTC_TimeTypeDef setTime; setData.Year = time->year; setData.Month = time->month; setData.Date = time->day; setTime.Hours = time->hour; setTime.Minutes = time->minute; setTime.Seconds = time->second; HAL_RTC_SetDate(&hrtc, &setData, RTC_FORMAT_BIN); HAL_RTC_SetTime(&hrtc, &setTime, RTC_FORMAT_BIN); } /** * @brief 得到rtc时间 * @param * @retval */ void getRTC_Time(timeInfo *time) { /* 日期结构体 */ static RTC_DateTypeDef getData; /* 时间结构体 */ static RTC_TimeTypeDef getTime; HAL_RTC_GetDate(&hrtc, &getData, RTC_FORMAT_BIN); HAL_RTC_GetTime(&hrtc, &getTime, RTC_FORMAT_BIN); time->year = getData.Year; time->month = getData.Month; time->day = getData.Date; time->hour = getTime.Hours; time->minute = getTime.Minutes; time->second = getTime.Seconds; } /** * @brief time1 - time2的差值 * @param * @retval 返回的时间单位为秒 */ uint32_t differTime(timeInfo *time1, timeInfo *time2) { uint32_t differ_s; differ_s = time1->second - time2->second + time1->minute * 60 - time2->minute * 60 + time1->hour * 3600 - time2->hour * 3600 + time1->day * 86400 - time2->day * 86400 + (time1->month - time2->month) * 2592000 + (time1->year - time2->year) * 31536000; return differ_s; } // /** // * @brief time3根据time1和time2差值得到time3,time3 += time1 - time2 // * @param // * @retval // */ // void chargeTime(timeInfo *time1, timeInfo *time2, timeInfo *time3) // { // }