#include "S3C2440.h"
#include "led.h"
#include "uart.h"
//RTC滴答中断处理函数
void __irq RTC_Tick_Handler(void)
{
unsigned char date[12] = "2000-00-00 ";
unsigned char time[9] = "00:00:00";
//清除滴答中断位
SRCPND = (1<<8);
INTPND = (1<<8);
RTCCON = 1;//RTC读写使能,BCD时钟、计数器、无复位
//读取年
if(BCDYEAR > 15)
{
date[2] = '0' + ((BCDYEAR & 0xf0) >> 4);
date[3] = '0' + (BCDYEAR & 0x0f);
}
else
{
if(BCDYEAR >= 10)
{
date[2] = '1';
date[3] = '0' + (BCDYEAR - 10);
}
else
{
date[2] = '0';
date[3] = '0' + (BCDYEAR & 0x0f);
}
}
//读取月
date[5] = '0' + ((BCDMON & 0x10) >> 4);
date[6] = '0' + (BCDMON & 0x0f);
//读取日
date[8] = '0' + ((BCDDATE & 0x30) >> 4);
date[9] = '0' + (BCDDATE & 0x0f);
//读取时
time[0] = '0' + ((BCDHOUR & 0x30) >> 4);
time[1] = '0' + (BCDHOUR & 0x0f);
//读取分
time[3] = '0' + ((BCDMIN & 0x70) >> 4);
time[4] = '0' + (BCDMIN & 0x0f);
//读取秒
time[6] = '0' + ((BCDSEC & 0x70) >> 4);
time[7] = '0' + (BCDSEC & 0x0f);
RTCCON = 0;//RTC读写禁止,BCD时钟、计数器、无复位
//串口发送日期
UART0_puts(date);
UART0_puts(time);
}
//RTC闹钟中断处理函数
void __irq RTC_Alarm_Handler(void)
{
//清除中断位
SRCPND = (1<<30);
INTPND = (1<<30);
//串口发送
UART0_puts("闹钟响了!");
}
//R设置RTC时间2022年12月12日01:40:00,星期一
void RTC_Set_Time(void)
{
RTCCON = 1;//RTC读写使能,BCD时钟、计数器、无复位
BCDYEAR = 0x22;
BCDMON = 0x12;
BCDDATE = 0x12;
BCDDAY = 0X1; //设置时间
BCDHOUR = 0X1;
BCDMIN = 0X40;
BCDSEC = 0X00;
RTCCON = 0;//RTC读写禁止,BCD时钟、计数器、无复位
}
//读取RTC时间
void RTC_Read_Time(void)
{
unsigned char date[12] = "2000-00-00 ";
unsigned char time[9] = "00:00:00";
RTCCON = 1;//RTC读写使能,BCD时钟、计数器、无复位
//读取年
if(BCDYEAR > 15)
{
date[2] = '0' + ((BCDYEAR & 0xf0) >> 4);
date[3] = '0' + (BCDYEAR & 0x0f);
}
else
{
if(BCDYEAR >= 10)
{
date[2] = '1';
date[3] = '0' + (BCDYEAR - 10);
}
else
{
date[2] = '0';
date[3] = '0' + (BCDYEAR & 0x0f);
}
}
//读取月
date[5] = '0' + ((BCDMON & 0x10) >> 4);
date[6] = '0' + (BCDMON & 0x0f);
//读取日
date[8] = '0' + ((BCDDATE & 0x30) >> 4);
date[9] = '0' + (BCDDATE & 0x0f);
//读取时
time[0] = '0' + ((BCDHOUR & 0x30) >> 4);
time[1] = '0' + (BCDHOUR & 0x0f);
//读取分
time[3] = '0' + ((BCDMIN & 0x70) >> 4);
time[4] = '0' + (BCDMIN & 0x0f);
//读取秒
time[6] = '0' + ((BCDSEC & 0x70) >> 4);
time[7] = '0' + (BCDSEC & 0x0f);
RTCCON = 0;//RTC读写禁止,BCD时钟、计数器、无复位
//串口发送日期
UART0_puts(date);
UART0_puts(time);
}
//RTC滴答设置
void RTC_Tick_Init(void)
{
//清除滴答中断位
SRCPND = (1<<8);
INTPND = (1<<8);
INTMSK &= ~(1<<8); //使能滴答中断
pISR_TICK = (unsigned)RTC_Tick_Handler;//中断处理函数
/*
滴答时间周期 = (时间计数+1)/128 = (127+1)/128 = 1s
*/
TICNT |= ((1<<7) | (0x7f<<0));//使能中断,时间计数设置为127
}
//RTC闹钟设置
void RTC_Alarm_Init(void)
{
RTCCON = 1;//RTC读写使能,BCD时钟、计数器、无复位
ALMSEC = 0;//秒闹钟设置为0,当秒数为0时,触发中断
RTCALM |= ((1<<6) | (1<<0));//使能全局闹钟,使能秒闹钟
RTCCON = 0;//RTC读写禁止,BCD时钟、计数器、无复位
//清除闹钟中断位
SRCPND = (1<<30);
INTPND = (1<<30);
INTMSK &= ~(1<<30);//使能闹钟中断
pISR_RTC = (unsigned)RTC_Alarm_Handler;//中断处理函数
}
没有合适的资源?快使用搜索试试~ 我知道了~
S3C2440裸机开发RTC配置
共41个文件
o:6个
d:6个
crf:5个
需积分: 8 1 下载量 37 浏览量
2022-12-12
20:35:11
上传
评论
收藏 371KB ZIP 举报
温馨提示
S3C2440裸机开发RTC配置
资源推荐
资源详情
资源评论
收起资源包目录
CSDN_RTC.zip (41个子文件)
CSDN_RTC
main.c 278B
led.h 157B
uart.uvproj 16KB
uart.h 176B
Objects
uart.axf 16KB
uart.o 35KB
rtc.d 101B
gpio.o 31KB
uart.build_log.htm 1KB
rtc.o 38KB
uart_Target 1.dep 2KB
main.crf 13KB
uart.crf 14KB
uart.hex 7KB
led.crf 12KB
gpio.crf 12KB
uart.lnp 384B
led.o 31KB
uart.sct 544B
led.d 90B
main.d 169B
rtc.crf 15KB
s3c2440.d 32B
s3c2440.o 4KB
uart.d 80B
main.o 30KB
gpio.d 93B
uart.htm 8KB
uart.uvgui.Lonelycity 87KB
led.c 408B
截图
1.png 126KB
2.png 149KB
rtc.h 154B
uart.uvopt 8KB
uart.c 1KB
rtc.c 3KB
Listings
s3c2440.lst 148KB
uart.map 13KB
S3C2440.h 37KB
S3C2440.s 56KB
JLinkArm_Target 1.ini 803B
共 41 条
- 1
资源评论
熄灭的反应堆
- 粉丝: 2
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功