Thread 中讨论的其他器件:EK-TM4C1294XL
您好!
这是一个有关休眠模块上 RTC 的非常简单的问题。 我已经在使用它来跟踪使用 RTC 的时间。 它运行正常、但我找不到内部 RTC 的年范围。
由于数据表提到使用32位计时器、我假设 RTC 将在2038上溢出。 是这样吗?
如果这很重要、我使用的是 TIvaware 库、它返回一个"struct TM"、使用1900作为参考。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
这是一个有关休眠模块上 RTC 的非常简单的问题。 我已经在使用它来跟踪使用 RTC 的时间。 它运行正常、但我找不到内部 RTC 的年范围。
由于数据表提到使用32位计时器、我假设 RTC 将在2038上溢出。 是这样吗?
如果这很重要、我使用的是 TIvaware 库、它返回一个"struct TM"、使用1900作为参考。
您好、Charles、
是的、你是对的。
最后一个问题:我应该修改哪些文件/函数、以便可以开始计算2000年而不是1900年的年数? 我认为我不应该与"time.h"相乱。 我想知道我是否可以假设 TivaWare 函数上提供的"struct TM"从2000年开始、但我意识到这样做可能会使我依赖的 mktime 和 localtime 函数从"struct TM"转换为"秒后"变得一团糟。
我已经在添加和减去70年、以创建兼容的"Linux epoch "时间戳。
不过、另一个问题是、如果基准年变化可以被4除、那么、在基准年变化时、移动基准年不应该与闰年计算相混乱、这是正确的吗?
您好!
我想知道您是否有机会在下运行 TivaWare 休眠示例 /examples/boards/EK-TM4C1294XL/hibernate. 如果您运行此示例、则会显示如何使用 date 命令通过终端窗口设置 DD/MM/YYYY。 当正确输入 DD/MM/YYYY 时,它将调用 DateTimeSet()函数,该函数将使用输入的日期/月/年加载 Stime 结构,然后调用 HibernateCalendarSet() API。 请参见下面的。
在 HIBERNATE_COMMAND_c 中
/********* // //命令:日期 // //设置当前系统日期。 使用格式"DD/MM/YYYY" // /********* int cmd_date (int argc、char **argv) { const char * pcNext; // //检查参数计数并返回错误太多或太少。 // if (argc ==1) { return (CMDLINE_TO_LING_args); } if (argc > 2) { return (CMDLINE_TOW_DONE_args); } // //将日期转换为无符号长整型 // G_ui32DayIdx = ustoutul (argv[1]、&pcNext、10); g_ui32MonthIdx = ustoutul (pcNext+1、&pcNext、10)-1; G_ui32YearIdx =(ustoutul (pcNext+1、NULL、10)- 2000); // //执行到时间结构的转换并将其存储在休眠中 //模块。 // if ((g_ui32DayIdx > 31)||(g_ui32MonthIdx > 11)) { return (CMDLINE_INVALID_ARG); } DateTimeSet(); 返回(0); }
文件中。
// // //此函数将请求的日期和时间写入 //休眠模块的日历逻辑。 //// ***************** void DateTimeSet (void) { struct tm Sttime; // //获取最新日期和时间。 这是在这里完成的、因此没有改变 //可以按原样回写部分日期和时间。 // HibernateCalendarGet (&S); // //设置要更新的日期和时间值。 // Stime.TM_hour = g_ui32HourIdx; Stime.TM_min = g_ui32MinIdx; Stime.TM_mon = g_ui32MonthIdx; Stime.TM_mday = g_ui32DayIdx; Stime.TM_year = 100 + g_ui32YearIdx; // //使用请求的数据更新休眠模块的日历逻辑。 // HibernateCalendarSet (&S);