OpenEdv-开源电子网

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

做RTC实验的时候,为什么只有原本会变(计数)的那部分日期和时间显示不了?求助

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2018-10-4
在线时间
6 小时
发表于 2018-10-4 11:44:08 | 显示全部楼层 |阅读模式
本帖最后由 jiao櫵 于 2018-10-5 17:35 编辑

main()
{...
LCD_ShowString(60,130,200,16,16,"    -  -  ");   
LCD_ShowString(60,162,200,16,16,"  :  :  ");      
while(1)
{            
  if(t!=calendar.sec)
  {
   t=calendar.sec;
   LCD_ShowNum(60,130,calendar.w_year,4,16);           
   LCD_ShowNum(100,130,calendar.w_month,2,16);           
   LCD_ShowNum(124,130,calendar.w_date,2,16);  
   switch(calendar.week)
   {
    case 0:
     LCD_ShowString(60,148,200,16,16,"Sunday   ");
     break;
    case 1:
     LCD_ShowString(60,148,200,16,16,"Monday   ");
     break;
    case 2:
     LCD_ShowString(60,148,200,16,16,"Tuesday  ");
     break;
    case 3:
     LCD_ShowString(60,148,200,16,16,"Wednesday");
     break;
    case 4:
     LCD_ShowString(60,148,200,16,16,"Thursday ");
     break;
    case 5:
     LCD_ShowString(60,148,200,16,16,"Friday   ");
     break;
    case 6:
     LCD_ShowString(60,148,200,16,16,"Saturday ");
     break;  
   }
   LCD_ShowNum(60,162,calendar.hour,2,16);           
   LCD_ShowNum(84,162,calendar.min,2,16);           
   LCD_ShowNum(108,162,calendar.sec,2,16);
   LED0=!LED0;
  }
  delay_ms(10);         
};  
}
//rtc.c
...
u8 RTC_Get(void)
{
static u16 daycnt=0;
u32 timecount=0;
u32 temp=0;
u16 temp1=0;   
    timecount=RTC_GetCounter();  
  temp=timecount/86400;   
if(daycnt!=temp)
{   
  daycnt=temp;
  temp1=1970;
  while(temp>=365)
  {     
   if(Is_Leap_Year(temp1))
   {
    if(temp>=366)temp-=366;
    else {temp1++;break;}  
   }
   else temp-=365;  
   temp1++;  
  }   
  calendar.w_year=temp1;
  temp1=0;
  while(temp>=28)
  {
   if(Is_Leap_Year(calendar.w_year)&&temp1==1)
   {
    if(temp>=29)temp-=29;
    else break;
   }
   else
   {
    if(temp>=mon_table[temp1])temp-=mon_table[temp1];
    else break;
   }
   temp1++;  
  }
  calendar.w_month=temp1+1;
  calendar.w_date=temp+1;
}
temp=timecount%86400;      
calendar.hour=temp/3600;      
calendar.min=(temp%3600)/60;  
calendar.sec=(temp%3600)%60;  
calendar.week=RTC_Get_Week(calendar.w_year,calendar.w_month,calendar.w_date);
return 0;
}  
我发现程序里面,好像是那个RTC_Get()函数不起作用?在main主函数里面如果不需要if语句,直接显示年月日时分秒的话,他们都是0.

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

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2018-10-4
在线时间
6 小时
 楼主| 发表于 2018-10-5 11:19:20 | 显示全部楼层
回复 支持 反对

使用道具 举报

7

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2016-4-3
在线时间
37 小时
发表于 2018-10-5 15:27:54 | 显示全部楼层
大哥问题不是这么问的,你这么问神仙也不知道啥情况啊,首先 你板子屏幕有没有问题,就是显示其他的是不是屏幕都正常,排除屏幕有问题。2 代码你下错没有是不是这个版本的还有就是代码改过没,如果是标准的例程 版本也对的话 也没改过的 还是这样基本上就是你板子有问题了可以送修了。
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2018-10-4
在线时间
6 小时
 楼主| 发表于 2018-10-5 15:38:28 | 显示全部楼层
jaems 发表于 2018-10-5 15:27
大哥问题不是这么问的,你这么问神仙也不知道啥情况啊,首先 你板子屏幕有没有问题,就是显示其他的是不是 ...

我就把它原来的代码下载进去啊。然后你说的代码可能有问题,我之前也把原来程序源码的压缩包里面的RTC程序给再解压出来,下载之后还是这样
回复 支持 反对

使用道具 举报

7

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2016-4-3
在线时间
37 小时
发表于 2018-10-5 16:20:29 | 显示全部楼层
你咋一点派出故障的方法都没有,按你说的 代码是压缩包的源代码没改过 ok 代码没问题,那屏幕呢?你能确定屏幕没问题吗? 用其他的屏幕程序看看屏幕是不是有问题,不可能屏幕硬件是好的 代码也没问题 还这样,肯定是 硬件软件其中一个出问题了,一个一个派出就行了,你咋这么死板呢,肯定有地方初出问题了只是你还没发现
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-8 00:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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