打印
[MCU]

LPC210X的实时时钟操作程序

[复制链接]
557|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
李香兰|  楼主 | 2015-8-30 10:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/********************初始化实时时钟*******************************************/
void  RTCInit(void)
{
  YEAR = 2011;        // 初化年
  MONTH = 12;        // 初化月
  DOM = 6;        // 初化日
  HOUR = 12;
  MIN = 59;
  SEC = 50;
//如果用到星期,则在这里正确初始化:DOW =(值为0~6)

  CIIR = 0x01;        // 设置秒值的增量产生一次中断
  CCR = 0x11;        // 使用独立振荡器,启动RTC. (0x01,0x10,0x13都不显示)
}

void  SendTimeRtc(void)//取星期不对
{
  U32  times;
  U8  bak;
  times = CTIME0;   // 读取完整时钟寄存器0

/*
  bak = (times>>24)&0x07;  // 取得星期的值
  Send_BUF[2] = bak/10+'0';
  Send_BUF[3] = bak%10+'0';  
// Send_BUF[4] = ':';

  DataDisp(bak/10,2,0);                 //显示星期  为什么取的星期不对呢?
  Delay(4);
  DataDisp(bak%10,3,0);
  Delay(2);*/
  bak = (times>>8)&0x3F;  // 取得分的值
  Send_BUF[0] = bak/10+'0';
  Send_BUF[1] = bak%10+'0';  
  Send_BUF[2] = ':';

  DataDisp(bak/10,0,0);                 //显示分钟
  Delay(4);
  DataDisp(bak%10,1,1);
  Delay(2);

  bak = times&0x3F;   // 取得秒的值
  Send_BUF[3] = bak/10+'0';
  Send_BUF[4] = bak%10+'0';  
  Send_BUF[5] = '\n';

  DataDisp(bak/10,2,0);                 //显示分钟
  Delay(4);
  DataDisp(bak%10,3,0);
  Delay(2);
}

操作了半天,取的星期老是不对。最后搞明白了,原来在RTCInit()中没有初始化时钟。
切记:如果要取星期,对星期的寄存器要初始化,然后ARM会自动计算某天的星期数据。

相关帖子

沙发
小狗爱吃骨头| | 2015-8-31 20:50 | 只看该作者
RTC用的是片内的还是外接的呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

248

帖子

0

粉丝