完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用PIC24FJ256GB108为fileio设置具有构建日期和时间的实时时钟。可以连接到互联网,并且想用sntp服务器时间更新实时时钟。想通过与sntp比较来检查实时时钟的准确性。ALUE,并将其转换为UNIX或EngCH时间。代码看起来很好用调试器检查。返回不工作,给出奇怪的结果。2599861时间429 49 64 717任何帮助都是好的。我似乎对UIT32的回报有问题,我的答案似乎并不总是正确的。
|
|
相关推荐
6个回答
|
|
对于一个开始,2000年不是闰年,所以不管怎样,你都会有1天的时间。当你确定“天”2D数组的第一个索引时,你的计算没有考虑到你已经把30加到一年中:30是不能被4平均整除的,所以计算的索引是错误的。使用您的示例,实际年份是2016年,因此使用“16”;16mod 4=0,这意味着使用第一行看起来正确的数据。但是“.”变量是46:46mod 4是2,所以您将使用错误的行。当然,所有这些都假设您的“BSP_RTCC_TimeGet”函数返回正确的值,但是我们看不到那个函数。另外,您使用的是“int”变量。你不说你正在使用的编译器,但是如果它是一个XC16,那么INT默认为16位。因此,只要您乘以24(小时/天),您将溢出16位值范围(即使返回的“年”是0,因为您添加了30)。因此,在那之后做任何计算都是垃圾。然而,我需要问“为什么”?在Internet上有许多关于如何做到这一点的代码示例,我似乎还记得使用一个应用程序在XC16运行时库中已经提供的一些代码示例。
|
|
|
|
请再次检查。一个世纪不是闰年,除非它可以被划分为400……例如:HTTPS://E.WiKiTo.Org/Wiki/LeAP年历。
|
|
|
|
|
|
所以要跟进。我希望在UNIX或Web时间里,这个时代是1970。FAT /文件IO的时代是1980。RTC模块的时代是2000。我的系统有USB主机/以太网/MiWi,为了节省时间,都使用了一些不同的东西。我使用的是XC16,rtcc.c和rtcc.h来自mla文件io示例。但是更严重的是,我改变了函数to uint32_t rtccUnix(void){uint32_t count=0x12345678;._.=count;return count;}具有作为uint32_t的._.,并且位于另一个文件中,其中它被调用为Output,此时是145581804sprintf(.,“%lu,”SNTPGetUTCSeconds());时间1450754805sprintf(.,“%lu,”rtccUnix());时间22136 sprintf(.,“%lu,”unix_time);时间305419896 sprintf(.,“%lu,”._re”;rtccUnix是0x5678C2F5unix_time是0x5678全局返回是否正确?是否有可能覆盖返回值的大小的设置?
|
|
|
|
请再次检查。一个世纪不是闰年,除非它能被400分开……例如,查看:https://en.wikipedia.org/wiki/Leap_yearMy.-我知道*规则一直在继续,但是我忘了那个!我想我的其他观点仍然是
|
|
|
|
我知道,一些参数被“PrtTf”函数解释的方式可能存在问题。还有一个完全避免它们的原因。苏珊
|
|
|
|
只有小组成员才能发言,加入小组>>
5025 浏览 9 评论
1928 浏览 8 评论
1865 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3081 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2153 浏览 5 评论
590浏览 1评论
454浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
486浏览 0评论
385浏览 0评论
IPECMD命令烧录AVR128DA48芯片,报找不到芯片错误
867浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-28 04:24 , Processed in 1.346615 second(s), Total 86, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号