OpenEdv-开源电子网

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

u8 RTC_Get(void)

[复制链接]

11

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2012-7-29
在线时间
0 小时
发表于 2012-8-20 16:33:14 | 显示全部楼层 |阅读模式

u8 RTC_Get(void)
{
 static u16 daycnt=0;
 u32 timecount=0;
 u32 temp=0;
 u16 temp1=0;  
   
 timecount=RTC->CNTH;//得到计数器中的值(秒钟数)
 timecount<<=16;
 timecount+=RTC->CNTL;   

 temp=timecount/86400;   //得到天数(秒钟数对应的)
 if(daycnt!=temp)//超过一天了
 {  
  daycnt=temp;
  temp1=1970; //从1970年开始
  while(temp>=365)
  {    
   if(Is_Leap_Year(temp1))//是闰年
   {
    if(temp>=366)temp-=366;//闰年的秒钟数
    else break; 
   }
   else temp-=365;   //平年
   temp1++; 
  }  
  timer.w_year=temp1;//得到年份
  temp1=0;
  while(temp>=28)//超过了一个月
  {
   if(Is_Leap_Year(timer.w_year)&&temp1==1)//当年是不是闰年/2月份
   {
    if(temp>=29)temp-=29;//闰年的秒钟数
    else break;
   }
   else
   {
    if(temp>=mon_table[temp1])temp-=mon_table[temp1];//平年
    else break;
   }
   temp1++; 
  }
  timer.w_month=temp1+1;//得到月份
  timer.w_date=temp+1;  //得到日期
 }
 temp=timecount%86400;     //得到秒钟数      
 timer.hour=temp/3600;     //小时
 timer.min=(temp%3600)/60; //分钟 
 timer.sec=(temp%3600)%60; //秒钟
 timer.week=RTC_Get_Week(timer.w_year,timer.w_month,timer.w_date);//获取星期  
 return 0;
}


timer.w_date=temp+1;  //得到日期 ???  此时temp应该是表示剩余的天数啊?日期应该是年月日这种形式啊?请原子哥解释下!谢谢

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2012-6-28
在线时间
0 小时
发表于 2012-8-20 16:50:27 | 显示全部楼层
回复【楼主位】wenfang1012:
---------------------------------
年月日,这里日期表示的是每个月的多少号
回复 支持 反对

使用道具 举报

11

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2012-7-29
在线时间
0 小时
 楼主| 发表于 2012-8-20 17:11:36 | 显示全部楼层
回复【2楼】xdz1989:
---------------------------------
哦,这样啊!谢谢指点!嘿嘿
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 10:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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