在MDK中利用google SVN下的源代码,编译BSP/
STM3210中的工程,并且增加了TFT液晶屏驱动,目前想在TFT 液晶屏显示 RTC时钟。
使用RT-Thread中的RTC.c驱动。有些疑问如下:
1. RTC.C中使用了“ local
time(&now);”函数获取本地时间,这个本地时间在嵌入式系统中是从哪里获取的呢?
2. 代码中有“ti->tm_year = year - 1900; ”,目前我按照YYYY/M M/DD格式传递日期参数。传递过来2010年,相减以后成为“110”。是否正确?是否要改成“ti->tm_year = year - 2000; ”?
void set_date(rt_uint32_t year, rt_uint32_t month, rt_uint32_t day)
{
time_t now;
struct tm* ti;
rt_device_t device;
ti = RT_NULL;
/* get current time */
time(&now);
ti = localtime(&now);
if (ti != RT_NULL)
{
ti->tm_year = year - 1900;
ti->tm_mon = month - 1; /* ti->tm_mon = month; */
ti->tm_mday = day;
}
now = mktime(ti);
device = rt_device_find("rtc");
if (device != RT_NULL)
{
rt_rtc_control(device, RT_DEVICE_CTRL_RTC_SET_TIME, &now);
}
}
3. 在程序任务中调用RTC.C中的函数time_t time(time_t* t),这个函数返回的值是一个unsigned int 类型,这类型是否包含了年月日,时分秒信息?
假如是,格式是怎么样的?
我在任务中调用Set_time() set_data()函数设定参数以后,再调用time()函数返回的值不是预期的值。