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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java Persistence APl(JPA)——JPA是啥? SpringBoot整合JPA JPA的增删改查 条件模糊查询 多对一查询

目录 引出Jpa是啥&#xff1f;Jpa的使用创建实体类写dao接口类写服务类 crud增删改查增加修改根据id删除全查询分页查询 条件查询模糊查询单条件查询多条件查询模糊查询排序查询 多对一查询定义实体类auto主键策略下新增进行全查询测试 全部代码application.yml配置类pom配置文…

Java反射机制是什么?

Java反射机制是 Java 语言的一个重要特性。 在学习 Java 反射机制前&#xff0c;大家应该先了解两个概念&#xff0c;编译期和运行期。 编译期是指把源码交给编译器编译成计算机可以执行的文件的过程。在 Java 中也就是把 Java 代码编成 class 文件的过程。编译期只是做了一些…

iPhone(iPad)安装deb文件

最简单的方法就是把deb相关的文件拖入手机对应的目录&#xff0c;一般是DynamicLibraries文件夹 参考&#xff1a;探讨手机越狱和安装deb文件的几种方式研究 1、在 Mac 上安装 dpkg 命令 打包 deb 教程之在 Mac 上安装 dpkg 命令_xcode打包root权限deb_qq_34810996的博客-CS…

驱动DAY4 字符设备驱动分步注册和ioctl函数点亮LED灯

头文件 #ifndef __HEAD_H__ #define __HEAD_H__ typedef struct{unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;unsigned int ODR; }gpio_t; #define PHY_LED1_ADDR 0X50006000 #define PHY_LED2_ADDR 0X50007000 #d…

一百五十八、Kettle——Kettle各版本及其相关安装包分享(网盘链接,不需积分、不需验证码) 持续更新、持续分享

一、目的 最近因为kettle9.3的shim问题看了好多博客&#xff0c;都没有网盘分享。后来有一位博主分享了kettle9.2的shim安装包&#xff0c;已经很感谢他&#xff0c;但是是博客分享&#xff0c;下载还需要搞验证码下载码之类的。 kettle9.2的shim安装包下载好后&#xff0c;一…

图数据库_Neo4j基于docker服务版安装_Neo4j Desktop桌面版安装---Neo4j图数据库工作笔记0004

然后我们来看看如何用docker来安装Neo4j community server 首先去执行docker pull neo4j:3.5.22-community 去拉取镜像 然后执行命令就可以安装了 可以用docker ps查看一下 看看暴露了哪些端口 然后再看一下访问一下这个时候,要用IP地址了注意 然后再来看一下安装Desktop 去下…

Sigmastar SSC8826Q 2K行车记录仪解决方案

一、方案描述 行车记录仪是智能辅助汽车驾驶&#xff0c;和管理行车生活的车联网智能终端设备&#xff0c;利用智能芯片处理器、GPS定位、网络通信、自动控制等技术&#xff0c;将与行车生活有关的各项数据有机地结合在一起。 行车记录仪如今已经成了必不可少的车载用品之一&…

双向-->带头-->循环链表

目录 一、双向带头循环链表概述 1.什么是双向带头循环链表 2.双向带头循环链表的优势 3.双向带头循环链表简图 二、双向带头循环链表的增删查改图解及代码实现 1.双向带头循环链表的头插 2.双向带头循环链表的尾插 3.双向带头循环链表的头删 4.双向带头循环链表的尾删…

ATF(TF-A) 威胁模型汇总

安全之安全(security)博客目录导读 目录计划如下&#xff0c;相关内容补充中&#xff0c;待完成后进行超链接&#xff0c;敬请期待&#xff0c;欢迎您的关注 1、通用威胁模型 2、SPMC威胁模型 3、EL3 SPMC威胁模型 4、fvp_r 平台威胁模型 5、RSS-AP接口威胁模型 威胁建模是安全…

浅学实战:探索PySpark实践,解锁大数据魔法!

文章目录 Spark和PySpark概述1.1 Spark简介1.2 PySpark简介 二 基础准备2.1 PySpark库的安装2.2 构建SparkContext对象2.3 SparkContext和SparkSession2.4 构建SparkSession对象2.5 PySpark的编程模型 三 数据输入3.1 RDD对象3.2 Python数据容器转RDD对象3.3 读取文件转RDD对象…

IDEA的常用设置,让你更快速的编程

一、前言 在使用JetBrains的IntelliJ IDEA进行软件开发时&#xff0c;了解和正确配置一些常用设置是非常重要的。IDEA的强大功能和定制性使得开发过程更加高效和舒适。 在本文中&#xff0c;我们将介绍一些常用的IDEA设置&#xff0c;帮助您更好地利用IDEA进行开发。这些设置包…

Java面向对象——封装以及this关键字

封 装 封装是面向对象编程&#xff08;OOP&#xff09;的三大特性之一&#xff0c;它将数据和操作数据的方法组合在一个单元内部&#xff0c;并对外部隐藏其具体实现细节。在Java中&#xff0c;封装是通过类的访问控制修饰符&#xff08;如 private、protected、public&#x…

Linux MQTT智能家居项目(智能家居界面布局)

文章目录 前言一、创建工程项目二、界面布局准备工作三、正式界面布局总结 前言 一、创建工程项目 1.选择工程名称和项目保存路径 2.选择QWidget 3.添加保存图片的资源文件&#xff1a; 在工程目录下添加Icon文件夹保存图片&#xff1a; 将文件放入目录中&#xff1a; …

网络层协议

网络层协议 IP协议基本概念协议头格式网段划分特殊的IP地址IP地址的数量限制私有IP地址和公网IP地址路由IP协议头格式后续 在复杂的网络环境中确定一个合适的路径 IP协议 承接上文&#xff0c;TCP协议并不会直接将数据传递给对方&#xff0c;而是交付给下一层协议&#xff0c;…

音视频FAQ(三):音画不同步

摘要 本文介绍了音画不同步问题的五个因素&#xff1a;编码和封装阶段、网络传输阶段、播放器中的处理阶段、源内容产生的问题以及转码和编辑。针对这些因素&#xff0c;提出了相应的解决方案&#xff0c;如使用标准化工具、选择强大的传输协议、自适应缓冲等。此外&#xff0…

uniapp微信小程序区分正式版,开发版,体验版

小程序代码区分是正式版&#xff0c;开发版&#xff0c;还是体验版 通常正式和开发环境需要调用不同域名接口&#xff0c;发布时需要手动更换 或者有些东西不想在正式版显示&#xff0c;只在开发版体验版中显示&#xff0c;也需要去手动隐藏 官方没有明确给出判断环境的方法&a…

SciencePub学术 | CCF推荐重点计算机SCIE征稿中

SciencePub学术 刊源推荐: CCF推荐重点计算机SCIE征稿中&#xff01;信息如下&#xff0c;录满为止&#xff1a; 一、期刊概况&#xff1a; CCF推荐重点SCIE简介 【期刊简介】IF&#xff1a;4.0&#xff0c;JCR2区&#xff0c;中科院3区&#xff1b; 【版面类型】正刊&#…

Swift 基础

工程目录 请点击下面工程名称&#xff0c;跳转到代码的仓库页面&#xff0c;将工程 下载下来 Demo Code 里有详细的注释 点击下载代码&#xff1a;swift-01

记录一下基于jeecg-boot3.0的待办消息移植记录

因为之前没有记录&#xff0c;所以还要看代码进行寻找&#xff0c;比较费劲&#xff0c;所以今天记录一下&#xff1a; 1、后端 SysAnnouncementController 下面函数增加待办的几个显示内容给前端用 具体代码如下&#xff1a; /*** 功能&#xff1a;补充用户数据&#xff0c…

由小波变换模极大值重建信号

给定信号&#xff0c; 令小波变换的尺度 则x(t)的二进小波变换为 令为取模极大值时的横坐标&#xff0c;那么就是模极大值。 目标是由坐标、模极大值及最后一级的低频分量重建信号x(t) 为了重建x(t)&#xff0c;假定有一信号集合h(t)&#xff0c;该集合中信号的小波变换和x(…