123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- #include "rtc.h"
- #include "dwt.h"
- #include <time.h>
- NVIC_InitTypeDef NVIC_InitStructure;
- ErrorStatus RTC_Set_Time(uint8_t hour, uint8_t min, uint8_t sec, uint8_t ampm)
- {
- RTC_TimeTypeDef RTC_TimeTypeInitStructure;
- RTC_TimeTypeInitStructure.RTC_Hours = hour;
- RTC_TimeTypeInitStructure.RTC_Minutes = min;
- RTC_TimeTypeInitStructure.RTC_Seconds = sec;
- RTC_TimeTypeInitStructure.RTC_H12 = ampm;
- return RTC_SetTime(RTC_Format_BIN, &RTC_TimeTypeInitStructure);
- }
- ErrorStatus RTC_Set_Date(uint8_t year, uint8_t month, uint8_t date, uint8_t week)
- {
- RTC_DateTypeDef RTC_DateTypeInitStructure;
- RTC_DateTypeInitStructure.RTC_Date = date;
- RTC_DateTypeInitStructure.RTC_Month = month;
- RTC_DateTypeInitStructure.RTC_WeekDay = week;
- RTC_DateTypeInitStructure.RTC_Year = year;
- return RTC_SetDate(RTC_Format_BIN, &RTC_DateTypeInitStructure);
- }
- uint8_t MyRTC_Init(void)
- {
- RTC_InitTypeDef RTC_InitStructure;
- uint16_t retry = 0X1FFF;
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
- PWR_BackupAccessCmd(ENABLE);
- if (RTC_ReadBackupRegister(RTC_BKP_DR0) != 0x5050)
- {
- RCC_LSEConfig(RCC_LSE_ON);
- while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
- {
- retry++;
- ms_delay(10);
- }
- if (retry == 0)
- return 1;
- RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
- RCC_RTCCLKCmd(ENABLE);
- RTC_InitStructure.RTC_AsynchPrediv = 0x7F;
- RTC_InitStructure.RTC_SynchPrediv = 0xFF;
- RTC_InitStructure.RTC_HourFormat = RTC_HourFormat_24;
- RTC_Init(&RTC_InitStructure);
- RTC_Set_Time(16, 18, 56, RTC_H12_AM);
- RTC_Set_Date(19, 2, 15, 6);
- RTC_WriteBackupRegister(RTC_BKP_DR0, 0x5050);
- }
- return 0;
- }
- uint32_t GetCur_TimeStamp(void)
- {
- struct tm TmStruct;
- uint32_t UnixNum;
- RTC_DateTypeDef RTC_DateStruct;
- RTC_TimeTypeDef RTC_TimeStruct;
- RTC_GetDate(RTC_Format_BIN, &RTC_DateStruct);
- RTC_GetTime(RTC_Format_BIN, &RTC_TimeStruct);
- TmStruct.tm_year = RTC_DateStruct.RTC_Year + 100;
- TmStruct.tm_mon = RTC_DateStruct.RTC_Month - 1;
- TmStruct.tm_mday = RTC_DateStruct.RTC_Date;
- TmStruct.tm_hour = RTC_TimeStruct.RTC_Hours - 8;
- TmStruct.tm_min = RTC_TimeStruct.RTC_Minutes;
- TmStruct.tm_sec = RTC_TimeStruct.RTC_Seconds;
- UnixNum = mktime(&TmStruct);
- return UnixNum;
- }
|