您的位置 首页 新品

S3C2440 RTC 裸机程序

RTC(实时时钟)单元可以在当系统电源关闭后通过备用电池工作。RTC可以通过使用STRBLDRBARM操作发送8位二-十进制交换码(BCD)值

RTC(实时时钟)单元能够在当体系电源封闭后经过备用电池作业。RTC 能够经过运用STRB/LDRB ARM 操作发送8 位二-十进制交流码(BCD)值数据给CPU。这些数据包含年、月、日、星期、时、分和秒的时刻信息。
RTC 单元作业在外部32.768kHz 晶振而且能够履行闹钟功用。

其特色归纳为:

1 时钟数据选用BCD编码 时钟数据包含 秒 分 时 日 月 年 星期(能对闰年的年月日在主动处理)
2 32.768K 的晶振供给时钟输入
3 能够供给毫秒级的时钟中止 该中止可用于作为嵌入式操作体系的内核时钟

用其时钟功用时 首要需求装备 实时时钟操控寄存器(RTCCON)
RTCCON 寄存器由4 位组成,如操控BCD 寄存器读/写使能的RTCEN、CLKSEL、CNTSEL 和测试用的
CLKRST。
RTCEN 位能够操控一切CPU 与RTC 之间的接口,因此在体系复位后在RTC 操控程序中有必要设置为1 来使

能数据的读/写。相同的在掉电前,RTCEN 位应该铲除为0 来防备误写入RTC 寄存器中。

RTC(Real-Time Clock):实时时钟。它的首要效果便是供给安稳的实时时钟给后续电路用。首要功用有:时钟,日历,闹钟,周期性中止输出,32KHz时钟输出。体系掉电的情况下,使用后备电源使时钟持续运转,然后不会丢掉时刻信息。
寄存器:
RTCCON :操控寄存器
TICNT:节拍时刻计数器
RTCALM:闹钟操控寄存器
ALMSEC:秒闹钟寄存器
ALMMIN:分闹钟寄存器
ALMHOUR:小时闹钟寄存器
ALMDATE:日闹钟寄存器
ALMMON:月闹钟寄存器
ALMYEAR:年闹钟寄存器
BCDSEC :秒寄存器
BCDMIN:分寄存器
BCDHOUR:时寄存器
BCDDAY:星期寄存器
BCDDATE:日寄存器
BCDMON:月寄存器
BCDYEAR:年寄存器

#defineGLOBAL_CLK1
#include “def.h”
#include “option.h”
#include “2440addr.h”
#include “2440lib.h”
#include “2440slib.h”
#include “mmu.h”

typedef struct Date
{
U16 year;
U8 month;
U8 day;
U8 week_day;
U8 hour;
U8 mintue;
U8 second;
}date;

date now_time;

void RTC_Setdate()
{
rRTCCON = 0x01;

rBCDYEAR =0x13; //p_date->year;
rBCDMON =0x07; //p_date->month;
rBCDDATE =0x29; // p_date->day;
rBCDDAY =0x2; // p_date->week_day;
rBCDHOUR =0x10; // p_date->hour;
rBCDMIN =0x48; //p_date->mintue;
rBCDSEC =0x00; //p_date->second;

rRTCCON = 0x00;
}

void RTC_Read(date *p_date)
{
rRTCCON = 0x01;

p_date->year = rBCDYEAR +0x2000 ;
p_date->month = rBCDMON ;
p_date->day = rBCDDATE ;
p_date->week_day = rBCDDAY;
p_date->hour = rBCDHOUR ;
p_date->mintue =rBCDMIN ;
p_date->second = rBCDSEC ;

rRTCCON = 0x00;
}

void delay(int times)
{
int i,j;
for(i = 0;i < times; i++)
for(j = 0; j < times; j++);
}

int Main()
{
char *week[7] = {“SUN”,”MON”,”TUES”,”WED”,”THURS”,”FRI”,”SAT”};
MMU_Init();
// RTC_Setdate();
while(1)
{
RTC_Read(&now_time);

Uart_Printf(“NOWTIME: x-x-x %s x:x:x”,now_time.year,
now_time.month,
now_time.day,
week[now_time.week_day-1],
now_time.hour,
now_time.mintue,
now_time.second);
delay(10000);
}
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/258373.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部