C语言驱动之配置RTC(基于S3C2440开发板)
发布日期:2021-05-26 20:05:03
浏览次数:11
分类:技术文章
本文共 2734 字,大约阅读时间需要 9 分钟。
这是rtc.c文件
#include----------------------------------------------------------华丽的分割线------------------------------------------------------------------#include #include "rtc.h"#include "irq.h"#include "lcd.h"#include "led.h"#include "bee.h"void RTC_Init(){ //RTC初始化 TDATE t={0,0,0,10,5,2018}; GPBCON |= (0x1 << 10);//将所有的led1(GPB5)设置为输出模式 GPBDAT |= (0x1 << 5); RTC_Set(&t); }//获取RTC时间void RTC_Get(TDATE *t){ RTCCON |= 1 << 0; //先打开RTC控制器使能,设置完时间后必须禁止RTC控制器使能 t->tm_year = RTC_BCD2INT(BCDYEAR) + 2000; t->tm_mon = RTC_BCD2INT(BCDMON); t->tm_mday = RTC_BCD2INT(BCDDATE); t->tm_hour = RTC_BCD2INT(BCDHOUR); t->tm_min = RTC_BCD2INT(BCDMIN); t->tm_sec = RTC_BCD2INT(BCDSEC); t->tm_wday = RTC_BCD2INT(BCDDAY); RTCCON &= ~(1 << 0);}//设置RTC时间void RTC_Set(const TDATE *t){ RTCCON |= 1 << 0; //先打开RTC控制器使能,设置完时间后必须禁止RTC控制器使能 BCDYEAR = RTC_INT2BCD(t->tm_year - 2000); BCDMON = RTC_INT2BCD(t->tm_mon); BCDDATE = RTC_INT2BCD(t->tm_mday); BCDHOUR = RTC_INT2BCD(t->tm_hour); BCDMIN = RTC_INT2BCD(t->tm_min); BCDSEC = RTC_INT2BCD(t->tm_sec); BCDDAY = RTC_INT2BCD(t->tm_wday); RTCCON &= ~(1 << 0);}/******************************** * * TICK中断初始化* *********************************/ void RTC_IRQ_TICK_Init(unsigned char tick) { //中断安装函数 irq_install(IRQ_TICK, RTC_timeDisplay); TICNT=tick | 0x80; //一般设置tick(127)周期1s ,开启Tick(第7位使能/禁止) } /******************************** * * 显示实时时间* *********************************/ void RTC_timeDisplay() { TDATE t; char ch[50]; char ch1[50]; RTC_Get(&t); //读取RT时间 sprintf(ch,"%d-%02d-%02d", t.tm_year,t.tm_mon,t.tm_mday); sprintf(ch1,"%02d:%02d:%02d",t.tm_hour,t.tm_min,t.tm_sec); lcd_print(295,5,ch, BLUE, WHITE); lcd_print(395,5,ch1, RED, WHITE);}//设置ALARM时间void Alarm_Set(const TDATE *t){ RTCCON |= 1 << 0; //先打开RTC控制器使能,设置完时间后必须禁止RTC控制器使能 ALMYEAR = RTC_INT2BCD(t->tm_year - 2000); ALMMON = RTC_INT2BCD(t->tm_mon); ALMDATE = RTC_INT2BCD(t->tm_mday); ALMHOUR = RTC_INT2BCD(t->tm_hour); ALMMIN = RTC_INT2BCD(t->tm_min); ALMSEC = RTC_INT2BCD(t->tm_sec); BCDDATE = RTC_INT2BCD(t->tm_wday); RTCALM = 0xFF; RTCCON &= ~(1 << 0);}
这是rtc.h文件
#ifndef _RTC_H_#define _RTC_H_#include "type.h"#define RTC_BCD2INT(X) (((((X)&0xF0)>>4)*10)+((X)&0xF))#define RTC_INT2BCD(X) ((((X)/10)<<4)+((X)%10))typedef struct{ u8 tm_sec; u8 tm_min; u8 tm_hour; u8 tm_mday; u8 tm_mon; u16 tm_year; u8 tm_wday;}TDATE;void RTC_Init(void);void RTC_Set(const TDATE *t);void RTC_Get(TDATE *t);void RTC_IRQ_TICK_Init(unsigned char tick);void RTC_timeDisplay(void);void Alarm_Set(const TDATE *t);#endif
转载地址:https://blog.csdn.net/Gaodes/article/details/81775961 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年04月01日 15时26分35秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
textarea在光标后追加内容,并将换行符替换成br标签
2019-04-25
kafka客户端脚本windows版
2019-04-25
zookeeper基础教程
2019-04-25
zookeeper单机版安装教程
2019-04-25
zookeeper集群版安装教程
2019-04-25
Spring @Cacheable当返回值为null时报错解决方案
2019-04-25
小数在计算机中如何存储?
2019-04-25
什么是二分查找、插值查找、斐波那契查找和索引查找?
2019-04-25
什么是二叉查找树,有什么优势?
2019-04-25
教你玩转二叉查找树的结点插入和删除操作
2019-04-25
下次再让你讲平衡二叉树,可别说不会了
2019-04-25
什么是B-树、B树、B+树、B*树?
2019-04-25
B树结点的插入删除操作
2019-04-25
String s=new String(“abc“)创建了几个对象?
2019-04-25
【干货】Linux 网卡绑定的相关知识和技巧
2019-04-25
学习笔记2021-01-13
2019-04-25
soul源码学习-20210114
2019-04-25
编程语言介绍
2019-04-25
JVM 基础知识
2019-04-25
Java字节码(一)
2019-04-25