我的方法更老土,设定时器。。。。。。。。
不过我是每分钟都有GPS校时的,运行的还可以
-> ctime_test
tm_sec = 43
tm_min = 11
tm_hour = 19
tm_mday = 11
tm_mon = 8
tm_year = 5
SUN FEB 06 06:28:15 2106
current data:1-6-206
current data:06-28
value = 19 = 0x13
,************************************************************
从以上结果来看,从BIOS中读取的时间是正确的。问题出在
sysOutByte( 0x70, 0x09 );/*year*/
cYear = sysInByte( 0x71 );
ahora.tm_year = ( cYear & 0x0F ) + 10 * ( ( cYear & 0xF0 ) >> 4 );
printf( "tm_year = %d\n", ahora.tm_year );
return mktime( &ahora );
,如果改成ahora.tm_year = ( cYear & 0x0F ) + 10 * ( ( cYear & 0xF0 ) >> 4 )+100;
试验运行的结果是正确的。
struct tm中tm_year为当前年减1900
BIOS中减2000;
至于为什么会出现时间固定,就不太清楚了,可能和mktime()函数的内部结构有关,有可能是数据错误,直接返回,只是猜想而以哦
星期和月份错的原因还是因为vxWorks和BIOS的时间格式不相同造成的。
tm结构中int tm_mon的范围是0-11;
而BIOS中的月份是1-12;
这样你得到的月份就差了一个月。
在asctime和mktime函数中认的月份是tm_mon%12。
如果你要用字符串显示的话,你就要在变换之前把tm_mon-1(最好用tm_mon=tm_mon%12);
或者直接用tm结构显示,或者自己写转换函数,很简单的。
至于向BIOS中写时间的问题,可根据需要,不过最好还是在手动更改时间或程序结束时向BIOS中写时间。
写法:
以秒为例子,unsgined char temp;
temp=tm_sec/10*16+tm_sec%10;
sysOutByte(0x70,0x00);
sysOutByte(0x71,temp);
由于我用zinc,我没有用到字符串显示时间,所以我用的是BIOS标准。如果用vxWorks标准的话很多tm项的取值范围都是不一样的,要注意。
我也是刚学,以后多交流。
星期和月份错的原因还是因为vxWorks和BIOS的时间格式不相同造成的。
tm结构中int tm_mon的范围是0-11;
而BIOS中的月份是1-12;
这样你得到的月份就差了一个月。
在asctime和mktime函数中认的月份是tm_mon%12。
如果你要用字符串显示的话,你就要在变换之前把tm_mon-1(最好用tm_mon=tm_mon%12);
或者直接用tm结构显示,或者自己写转换函数,很简单的。
至于向BIOS中写时间的问题,可根据需要,不过最好还是在手动更改时间或程序结束时向BIOS中写时间。
写法:
以秒为例子,unsgined char temp;
temp=tm_sec/10*16+tm_sec%10;
sysOutByte(0x70,0x00);
sysOutByte(0x71,temp);
由于我用zinc,我没有用到字符串显示时间,所以我用的是BIOS标准。如果用vxWorks标准的话很多tm项的取值范围都是不一样的,要注意。
我也是刚学,以后多交流。
EarnestWang说的很对。你能告诉大家如何修改bios中的所有时钟信息吗?包括年月日,时分秒等。
有奖活动 | |
---|---|
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 | |
【我踩过的那些坑】DRC使用位置错误导致的问题被打赏100分 | |
我踩过的那些坑之混合OTL功放与落地音箱被打赏50分 | |
汽车电子中巡航控制系统的使用被打赏10分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏100分 | |
分享汽车电子中巡航控制系统知识被打赏10分 | |
分享安全气囊系统的检修注意事项被打赏10分 | |
分享电子控制安全气囊计算机知识点被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】【OZONE】使用方法总结被打赏20分 | |
【分享开发笔记,赚取电动螺丝刀】【S32K314】芯片启动流程分析被打赏40分 |