RTC实验

一、RTC简介

RTC(Real Time Clock)即实时时钟,它是一个可以为系统提供精确的时间基准的元器件,RTC一般采用精度较高的晶振作为时钟源,有些RTC为了在主电源掉电时还可以工作,需要外加电池供电

在这里插入图片描述
在这里插入图片描述

BCD码,四位二进制表示一位十进制数

例如:

十进制数:12,二进制位:1100, BCD码:0001 0010

在这里插入图片描述
寄存器详解
BCDSEC-BCDYEAR重点掌握,存储实际时间

ALMSEC-ALMYEAR设置预期时间
在这里插入图片描述
RTCCON寄存器[0]位打开RTC控制,以便校准时间
在这里插入图片描述
修改年,月,日,星期,时,分,秒
BCDDAY(日)寄存器和BCDWEEK(星期)寄存器手册里面的地址写反了,所以用的时候两个对调使用,星期6就设置BCDDAY寄存器,15日就设置BCDWEEK寄存器

BCD码的信息不可以直接使用%d打印,因为打印出来的值是十进制的数值,比如:0x023打印出来的值是35

interface.c

#include "exynos_4412.h"

int main()
{
	unsigned int Oldsec = 0, Newsec = 0;

	/*使能RTC控制*/
	RTCCON = RTCCON | 1;
	/*校准时间信息*/
	RTC.BCDYEAR = 0x023;
	RTC.BCDMON = 0x8;
	RTC.BCDDAY = 0x1;
	RTC.BCDWEEK = 0x15;
	RTC.BCDHOUR = 0x16;
	RTC.BCDMIN = 0x46;
	RTC.BCDSEC = 0x50;
	/*禁止RTC控制*/
	RTCCON = RTCCON & (~(1));

	while(1) {
		Newsec = RTC.BCDSEC;
		if(Oldsec != Newsec) {
			printf("20%x-%x-%x %x %x:%x:%x\n", RTC.BCDYEAR, RTC.BCDMON, RTC.BCDWEEK, RTC.BCDDAY, RTC.BCDHOUR, RTC.BCDMIN, RTC.BCDSEC);
			Oldsec = Newsec;
		}
	}
	return 0;
}

实验小例子

1.编程实现通过LED状态显示当前电压范围,并打印产生低压警报时的时间

注: 电压在1501mv~1800mv时,LED2、LED3、LED4、LED5点亮
电压在1001mv~1500mv时,LED2、LED3、LED4点亮 电压在501mv~1000mv时,LED2、LED3点亮
电压在0mv~500mv时,LED2闪烁,且每隔一秒钟向终端打印一次当前的电压值及当前的时间

interface.c

#include "exynos_4412.h"

					/* 点亮LED2 */
#define LED2_ON (GPX2.DAT = GPX2.DAT | (1 << 7))
					/* 熄灭LED2 */
#define LED2_OFF (GPX2.DAT = GPX2.DAT & (~(1 << 7)))
					/* 点亮LED3 */
#define LED3_ON (GPX1.DAT = GPX1.DAT | 1)
					/* 熄灭LED3  */
#define LED3_OFF (GPX1.DAT = GPX1.DAT & (~ 1))
					/* 点亮LED4 */
#define LED4_ON (GPF3.DAT = GPF3.DAT | (1 << 4))
					/* 熄灭LED4 */
#define LED4_OFF (GPF3.DAT= GPF3.DAT & (~(1 << 4)))
					/* 点亮LED5 */
#define LED5_ON (GPF3.DAT = GPF3.DAT | (1 << 5))
					/* 熄灭LED5 */
#define LED5_OFF (GPF3.DAT = GPF3.DAT & (~ (1 << 5)))

/*循环延时*/
void Delay(unsigned int Time) {
	while(Time--);
}

/*初始化呢ADCCON寄存器*/
void ADC_CON(void) {

	/*将ADC的精度设置成 12bit*/
	ADCCON = ADCCON | (1 << 16);
	/*使能ADC的分频器*/
	ADCCON = ADCCON | (1 << 14);
	/*设置ADC的分频值, ADC的时钟频率 = PLCK/(19+1) = 5MHZ 
	 * ADC的转换频率 = 5MHZ / 5 = 1MHZ*/
	ADCCON = ADCCON & (~(0xFF << 6)) | (19 << 6);
	/*关闭待机模式,使能正常模式*/
	ADCCON = ADCCON & (~(1 << 2));
	/*关闭读使能通过转换AD*/
	ADCCON = ADCCON & (~(1 << 1));
	/*选择转换通道 3通道*/
	ADCMUX = 3;
}

int main()
{
	unsigned int AdcValue = 0;
	unsigned int Oldsec = 0, Newsec = 0;
	ADC_CON();
	GPX2.CON = GPX2.CON & (~(0xF << 28)) | (0x1 << 28);
	GPX1.CON = GPX1.CON & (~(0xF)) | (0x1);
	GPF3.CON = GPF3.CON & (~(0xFF << 16)) | (0x11 << 16);

	/*使能RTC控制*/
	RTCCON = RTCCON | 1;
	/*校准时间信息*/
	RTC.BCDYEAR = 0x023;
	RTC.BCDMON = 0x8;
	RTC.BCDDAY = 0x1;
	RTC.BCDWEEK = 0x15;
	RTC.BCDHOUR = 0x16;
	RTC.BCDMIN = 0x46;
	RTC.BCDSEC = 0x50;
	/*禁止RTC控制*/
	RTCCON = RTCCON & (~(1));

	while(1) {
		/*开始转换*/
		ADCCON = ADCCON | 1;
		/*等待转换完成,因为转换需要时间*/
		while(!(ADCCON & (1 << 15)));
		/*读取转换结果*/
		AdcValue = ADCDAT & 0xFFF;
		/*将结果转换成实际的电压值 mv   1800(mv) / (2^12-1) = 0.44*/
		AdcValue = AdcValue * 0.44;

		if(AdcValue >= 1501 && AdcValue <= 1800) {
			/*LED2 LED3 LED4 LED5 点亮*/
			LED2_ON;
			LED3_ON;
			LED4_ON;
			LED5_ON;

		} else if (AdcValue >= 1001 && AdcValue <= 1500) {
			/*LED2 LED3 LED4 点亮*/
			LED5_OFF;
			LED2_ON;
			LED3_ON;
			LED4_ON;
			
		} else if (AdcValue >= 501 && AdcValue <= 1000) {
			/*LED2 LED3 点亮*/
			LED4_OFF;
			LED5_OFF;
			LED2_ON;
			LED3_ON;

		} else if (AdcValue >= 0 && AdcValue <= 500) {

			Newsec = RTC.BCDSEC;
			if(Oldsec != Newsec) {
				/*打印电压值及当前时间*/
				printf("AdcValue = %dmv, 20%x-%x-%x %x %x:%x:%x\n", AdcValue, RTC.BCDYEAR, RTC.BCDMON, RTC.BCDWEEK, RTC.BCDDAY, RTC.BCDHOUR, RTC.BCDMIN, RTC.BCDSEC);
				Oldsec = Newsec;
			}

			/*LED2 闪烁*/
			LED3_OFF;
			LED4_OFF;
			LED5_OFF;
			LED2_ON;
			Delay(1000000);
			LED2_OFF;
			Delay(1000000);
		}  


	}
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/75290.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【潮州饶平】联想 IBM x3850 x6 io主板故障 服务器维修

哈喽 最近比较忙也好久没有更新服务器维修案例了&#xff0c;这次分享一例潮州市饶平县某企业工厂一台IBM System x3850 x6服务器亮黄灯告警且无法正常开机的服务器故障问题。潮州饶平ibm服务器维修IO主板故障问题 故障如下图所示&#xff1a; 故障服务器型号&#xff1a;IBM 或…

CI/CD流水线实战

不知道为什么&#xff0c;现在什么技术都想学&#xff0c;因为我觉得我遇到了技术的壁垒&#xff0c;大的项目接触不到&#xff0c;做的项目一个字辣*。所以&#xff0c;整个人心浮气躁&#xff0c;我已经得通过每天的骑行和长跑缓解这种浮躁了。一个周末&#xff0c;我再次宅在…

2011-2021年数字普惠金融指数Bartik工具变量法(含原始数据和Bartik工具变量法代码)

2011-2021年数字普惠金融指数Bartik工具变量法&#xff08;含原始数据和Bartik工具变量法代码&#xff09; 1、时间&#xff1a;2011-2020&#xff08;省级、城市&#xff09;&#xff0c;2014-2020&#xff08;区县&#xff09; 2、原始数据来源&#xff1a;北大金融研究中心…

【数据结构】双链表

【数据结构】双链表 一. 前言二. 带头双向链表接口实现1.准备工作2. 创建一个节点 三. 初始化4. 打印5. 尾插6. 尾删7. 头插8. 头删9. 计算节点个数10. 查找数据11. 在任意位置插入数据12. 在任意位置删除数据13. 销毁 四. 如何10分钟内完成一个完整双链表 一. 前言 带头双向循…

通达OA SQL注入漏洞【CVE-2023-4165】

通达OA SQL注入漏洞【CVE-2023-4165】 一、产品简介二、漏洞概述三、影响范围四、复现环境POC小龙POC检测工具: 五、修复建议 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损…

元宇宙时代超高清视音频技术白皮书关于流媒体协议和媒体传输解读

流媒体协议 元宇宙业务场景对流媒体传输的实时性和互动性提出了更高的要求&#xff0c;这就需要在传统的 RTMP、SRT、 HLS 等基础上增加实时互动的支持。实时互动&#xff0c;指在远程条件下沟通、协作&#xff0c;可随时随地接入、实时地传递虚实融合的多维信息&#xff0c;身…

uni-app日期选择器

写个简单的日期选择器&#xff0c;还没搞样式&#xff0c;所以有点丑 大概长这样吧 首先是这个picker选择器&#xff0c;mode选择日期&#xff0c;end是写一个范围前日期&#xff0c;:end就是这个日期是动态变化的&#xff0c;还有change函数 <template><view>&l…

Mybatis 初识

目录 1. MyBatis入门 1.1 MyBatis的定义 1.2 MyBatis的核心 MyBatis的核心 JDBC 的操作回顾 1.3 MyBatis的执行流程 MyBatis基本工作原理 2. MyBatis的使用 2.1 MyBatis环境搭建 2.1.1 创建数据库和表 2.1.2 添加MyBatis框架支持 老项目添加MyBatis 新项目添加MyBatis 2.1.3 设…

iphone拷贝照片中间带E自动去重软件,以及java程序如何打包成jar和exe

文章目录 一、前提二、问题描述三、原始处理方式四、程序处理4.1 java程序如何打包exe4.1.1 首先打包jar4.1.2 开始生成exe4.1.3 软件使用方式 4.2 更换图标4.2.1 更换swing的打包jar图标4.2.2 更换exe图标 4.3 如何使生成的exe在没有java环境的电脑上运行4.3.1 Inno Setup打包…

uniapp的uview-plus组件库的导入

uniapp的vue3中使用uview-plus组件库。在插件市场中找到该组件并点击如下所示绿色按钮&#xff0c;弹出弹窗选择要导入的项目后&#xff0c;就会在uni_modules文件中生成如下文件内容 关于插件的下载区别&#xff0c;可参考&#xff1a;https://uniapp.dcloud.net.cn/compone…

VSCode如何设置高亮

一、概述 本文主要介绍在 VSCode 看代码时&#xff0c;怎样使某个单词高亮显示&#xff0c;主要通过以下三步实现&#xff1a; 安装 highlight-words 插件 配置 highlight-words 插件 设置高亮快捷键F8 工作是嵌入式开发的&#xff0c;代码主要是C/C的&#xff0c;之前一直用…

uniapp 扩展组件 uni-forms 的表单验证之 validateFunction 只响应一次

uniapp 扩展组件 uni-forms 的表单验证之 validateFunction 只响应一次 问题代码官方说明参考资料 问题代码 直接从官方示例中复制过来改的。为了演示 <template><view><uni-forms ref"form" :modelValue"formData" :rules"rules&qu…

day 0815

计算文件有多少行&#xff1f; 2.文件的拷贝

Java中有哪些可以用于日期和时间的API?

从Java 8开始&#xff0c;java.time包提供了新的日期和时间API&#xff0c;新增的API严格区分了时刻、本地日期、本地时间&#xff0c;并且&#xff0c;对日期和时间进行运算更加方便。主要涉及的类型有以下几类&#xff1a; LocalDate&#xff1a;不包含具体时间的日期。 Lo…

ArcGIS入门操作手册

一.ArcGIS安装过程 参考本人博客&#xff1a;保姆级Arcgis安装图文安装教程_追忆苔上雪的博客-CSDN博客 二.ArcGIS植被指数计算 (1)使用工具&#xff1a;栅格计算器 打开软件&#xff0c;右侧搜索栅格计算器打开&#xff0c;要是搜索栏不小心叉掉找不到了&#xff0c;可以通…

初识结构体

文章目录 目录1. 结构体类型的声明1.1 结构的基础知识1.2 结构的声明1.3 结构成员的类型1.4 结构体变量的定义和初始化 2. 结构体成员的访问3. 结构体传参 目录 结构体类型的声明结构体初始化结构体成员访问结构体传参 1. 结构体类型的声明 1.1 结构的基础知识 结构是一些值的…

可白嫖的4家免费CDN,并测试其网络加速情况(2023版)

网站加载速度优化过程中&#xff0c;不可避免的会用上CDN来加速资源的请求速度。但是市面上的CDN资源几乎都是要收费的&#xff0c;而且价格还不便宜&#xff0c;对于小公司站长来讲&#xff0c;这将是一笔不小的开销。不过还是有一些良心公司给我们提供了免费的资源&#xff0…

私密相册管家-加密码保护私人相册照片安全

App Store史上最安全、最强大、最卓越的私密相册App&#xff01;再也不用担心私密照片视频被别人看见了&#xff01;
私密相册为你提供多重密码保护机制、简单便捷的照片存储空间&#xff0c;完美地将你的私密照片远离一切恶意偷窥者的窥探&#xff01; 【产品功能】
 √ 支…

【Pytorch:nn.Embedding】简介以及使用方法:用于生成固定数量的具有指定维度的嵌入向量embedding vector

文章目录 1、nn.Embedding2、使用场景 1、nn.Embedding 首先我们讲解一下关于嵌入向量embedding vector的概念 1&#xff09;在自然语言处理NLP领域&#xff0c;是将单词、短语或其他文本单位映射到一个固定长度的实数向量空间中。嵌入向量具有较低的维度&#xff0c;通常在几…

两天入门Linux、搭建Spring环境 第一天

一、Linux简介 1.什么是Linux 一个操作系统&#xff0c;未来公司里面会用到、接触的新操作系统。 2.为什么学Linux (1)个人职务需要&#xff0c;肯定会接触到Linux (2)职业发展&#xff0c;以后的发展肯定需要掌握Linux的许多使用方法 3.学哪些内容 (1)Linux基本介绍 (2)…