OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6619|回复: 3

如何将RTC的时间转换成Unix时间戳

[复制链接]

60

主题

167

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2017-3-17
在线时间
120 小时
发表于 2017-10-20 15:06:37 | 显示全部楼层 |阅读模式
1金钱
如何将RTC的时间转换成Unix时间戳,有例程吗?

最佳答案

查看完整内容[请看2#楼]

[mw_shl_code=c,true]/***************************** *函数名:Is_leap_year *功 能:是否闰年 *输 入: *输 出: *******************************/ u8 Is_leap_year(u16 year) { if((year%400)==0) return 1; else if((year%100)==0) return 0; else if((year%4)==0) return 1; return 0; } /***************************** *函数名:Days_of_month *功 能:每月天数 *输 入: *输 出: * ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

60

主题

167

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2017-3-17
在线时间
120 小时
 楼主| 发表于 2017-10-20 15:06:38 | 显示全部楼层
[mw_shl_code=c,true]/*****************************
*函数名:Is_leap_year
*功  能:是否闰年
*输  入:
*输  出:
*******************************/
u8 Is_leap_year(u16 year)
{
        if((year%400)==0)
                return 1;
        else if((year%100)==0)
                return 0;
        else if((year%4)==0)
                return 1;
        return 0;
}
/*****************************
*函数名:Days_of_month
*功  能:每月天数
*输  入:
*输  出:
*******************************/
u8 Days_of_month(u16 year,u8 month)
{
        if (month != 2) {
        return day_per_mon[month - 1];
    } else {
        return day_per_mon[1] + Is_leap_year(year);
    }
}
/*****************************
*函数名:utc_sec
*功  能:获取unix时间戳
*输  入:
*输  出:
*******************************/
u32 utc_sec(void)
{
        u8 i;
        u16 days=0;//天数
        u32        secs;        //秒数
        RTC_TimeTypeDef RTC_TimeStruct;
        RTC_DateTypeDef RTC_DateStruct;
        RTC_GetTime(RTC_Format_BIN,&RTC_TimeStruct);
        RTC_GetDate(RTC_Format_BIN,&RTC_DateStruct);
        /* year */
        for(i=UTC_BASE_YEAR;i<RTC_DateStruct.RTC_Year;i++)
                days+=(DAY_PER_YEAR+Is_leap_year(i));
        /* month */
        for(i=1;i<RTC_DateStruct.RTC_Month;i++)
                days+=(DAY_PER_YEAR+Is_leap_year(i));
        /* day */
        days+=(RTC_DateStruct.RTC_Date-1);
        /* sec */
        secs=days*SEC_PER_DAY+(RTC_TimeStruct.Hours*SEC_PER_HOUR+RTC_TimeStruct.RTC_Minutes*SEC_PER_MIN+RTC_TimeStruct.RTC_Seconds);
        return secs;
       
}[/mw_shl_code]
回复

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2018-5-11
在线时间
10 小时
发表于 2018-7-10 14:34:19 | 显示全部楼层
谢谢,学习了。
回复

使用道具 举报

2

主题

474

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6411
金钱
6411
注册时间
2018-6-27
在线时间
543 小时
发表于 2020-11-27 08:31:00 | 显示全部楼层
学习学习,学习学习。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-30 06:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表