修改RTC驱动程序

发现BSP的RTC驱动程序存在错误:修改日期只能在1到7之间。例如选择了24日,应用之后,自动又是4日获得了焦点。

原因是OEMSetRealTime函数对RTC的设置不正确,把BCDDATE和BCDDAY倒过来用了。

 

解决方法:

1 修改PLATFORM/COMMON/SRC/ARM/SAMSUNG/S3C2440A/Rtc/rtc.c的OEMSetRealTime函数:

  1. OUTPORT32(&pRTCReg->BCDDAY,  pTime->wDayOfWeek + 1);
  2. OUTPORT32(&pRTCReg->BCDDATE, TO_BCD(pTime->wDay));

OEMGetRealTime函数:

  1. data = INPORT32(&pRTCReg->BCDDATE) & 0x3f;
  2. pTime->wDay = FROM_BCD(data);
  3. pTime->wDayOfWeek = (WORD)INPORT32(&pRTCReg->BCDDAY) - 1;

2 修改PLATFORM/SMDK2440A/Src/Bootloader/Eboot/ether.c的OEMGetRealTime函数:

  1. lpst->wDay          = FROM_BCD(s2440RTC->BCDDATE  & 0x3f);
  2. lpst->wDayOfWeek    = (s2440RTC->BCDDAY - 1);

另外,由于OEMSetRealTime每次开机都会执行,导致时间每次都回到2003年1月1日,可以设置一个静态变量,取消第一次设置RTC:

  1.  static BOOL bFirstSet = TRUE;
  2.  if (bFirstSet)
  3.  {
  4.       bFirstSet = FALSE;
  5.       return TRUE;
  6.  }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值