河北水利局项目
This commit is contained in:
112
filedata/fileidatatime.c
Normal file
112
filedata/fileidatatime.c
Normal file
@@ -0,0 +1,112 @@
|
||||
#include "file.h"
|
||||
#include "filedata.h"
|
||||
#include "rtc_ext.h"
|
||||
|
||||
//include/linux/time.h
|
||||
//内核中的mktime()函数位于kernel/time.c内
|
||||
|
||||
|
||||
uint8_t rtc_getRTC(RTC_TimeDateTypeDef* para)
|
||||
{
|
||||
uint8_t Result = 1;
|
||||
|
||||
|
||||
st_rtc_ext TempTime1;
|
||||
|
||||
read_rtc_time(&TempTime1);//读一次时间
|
||||
|
||||
Result = 0;
|
||||
para->Year = TempTime1.year;
|
||||
para->Month = TempTime1.month;
|
||||
para->Date = TempTime1.day;
|
||||
para->Hour = TempTime1.hour;
|
||||
para->Minute = TempTime1.min;
|
||||
para->Second = TempTime1.sec;
|
||||
para->Week = TempTime1.week;
|
||||
return Result;
|
||||
}
|
||||
|
||||
unsigned long mktime (unsigned int year, unsigned int mon,
|
||||
unsigned int day, unsigned int hour,
|
||||
unsigned int min, unsigned int sec)
|
||||
{
|
||||
if (0 >= (int) (mon -= 2)) { /* 1..12 -> 11,12,1..10 */
|
||||
mon += 12; /* Puts Feb last since it has leap day */
|
||||
year -= 1;
|
||||
}
|
||||
|
||||
return (((
|
||||
(unsigned long) (year/4 - year/100 + year/400 + 367*mon/12 + day) +
|
||||
year*365 - 719499
|
||||
)*24 + hour /* now have hours */
|
||||
)*60 + min /* now have minutes */
|
||||
)*60 + sec; /* finally seconds */
|
||||
}
|
||||
|
||||
uint8_t bcd_to_dec(uint8_t val)
|
||||
{
|
||||
return ((((val)>>4)*10) + ((val)&0x0F));
|
||||
}
|
||||
|
||||
uint8_t get_space_day(uint32_t oldtime,uint32_t newtime)
|
||||
{
|
||||
uint8_t day = 0;
|
||||
if(newtime>oldtime)
|
||||
{
|
||||
day = (newtime - oldtime)/(3600*24);
|
||||
}
|
||||
return day;
|
||||
}
|
||||
|
||||
uint32_t get_curtime(uint8_t *curyear,uint8_t *curmon,uint8_t *curday)
|
||||
{
|
||||
RTC_TimeDateTypeDef rtctime;
|
||||
uint32_t time = 0;
|
||||
uint32_t year = 0;
|
||||
uint8_t mon = 0;
|
||||
uint8_t day = 0;
|
||||
rtc_getRTC(&rtctime);
|
||||
|
||||
year = bcd_to_dec(rtctime.Year);
|
||||
mon = bcd_to_dec(rtctime.Month);
|
||||
day = bcd_to_dec(rtctime.Date);
|
||||
|
||||
year = year + DEC_YEAR;
|
||||
time = mktime(year,mon,day,0,0,0);
|
||||
|
||||
*curyear = year;
|
||||
*curmon = mon;
|
||||
*curday = day;
|
||||
|
||||
#ifdef DEBUG_FILEI2C
|
||||
HT_PRINT("time = %d year = %d mon = %d day = %d\r\n",time,year,mon,day);
|
||||
#endif
|
||||
return time;
|
||||
}
|
||||
|
||||
|
||||
void get_complete_curtime(uint32_t *curyear,uint8_t *curmon,uint8_t *curday,uint8_t *curhour,uint8_t *curmin)
|
||||
{
|
||||
RTC_TimeDateTypeDef rtctime;
|
||||
uint32_t year = 0;
|
||||
uint8_t mon = 0;
|
||||
uint8_t day = 0;
|
||||
uint8_t hour = 0;
|
||||
uint8_t min = 0;
|
||||
rtc_getRTC(&rtctime);
|
||||
|
||||
year = bcd_to_dec(rtctime.Year);
|
||||
mon = bcd_to_dec(rtctime.Month);
|
||||
day = bcd_to_dec(rtctime.Date);
|
||||
hour = bcd_to_dec(rtctime.Hour);
|
||||
min = bcd_to_dec(rtctime.Minute);
|
||||
|
||||
year = year + DEC_YEAR;
|
||||
|
||||
*curyear = year;
|
||||
*curmon = mon;
|
||||
*curday = day;
|
||||
*curhour = hour;
|
||||
*curmin = min;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user