lv11 嵌入式开发 RTC 17
目录
1 RTC简介
编辑2 Exynos4412下的RTC控制器
2.1 概述
2.2 特征
2.3 功能框图
3 寄存器介绍
3.1 概述
3.2 BCD格式的年月日寄存器
3.3 INTP中断挂起寄存器
3.4 RTCCON控制寄存器
3.5 CURTICCNT 作为嘀嗒定时器使用的寄存器
4 RTC编程
5 练习
1 RTC简介
RTC(Real Time Clock)即实时时钟,它是一个可以为系统提供精确的时间基准的元器件,RTC一般采用精度较高的晶振作为时钟源,有些RTC为了在主电源掉电时还可以工作,需要外加电池供电
2 Exynos4412下的RTC控制器
2.1 概述
实时时钟(RTC)单元可以在系统断电时使用备用电池进行运行。尽管电源关闭,备用电池可以存储秒、分钟、小时、星期几、日期、月份和年份的时间数据。RTC单元与外部32.768 kHz晶体一起工作,并执行报警功能。
2.2 特征
- 支持BCD数字,即秒、分钟、小时、星期几、日期、月份和年份。
- 支持闰年生成器。
- 支持报警功能,即报警中断或从电源关闭模式唤醒。电源关闭模式有:空闲、深度空闲、停止、深度停止和睡眠。
- 支持计时器功能,即计时器中断或从电源关闭模式(空闲、深度空闲、停止、深度停止和睡眠)唤醒。
- 支持独立电源引脚(RTCVDD)。
- 支持毫秒级滴答时间中断,以供RTOS内核时间滴答使用。
注:BCD码 即4位二进制表示一位十进制数。如12,0001 0010
2.3 功能框图
clock divider分配器,分频系数是2^15=32768正好提供1hz,相当于1秒给秒使用。
其余内容不详细介绍,主要是对晶振、引脚、瑞年计数器等介绍。
3 寄存器介绍
3.1 概述
INTP 中断挂起计时器
RTCCON 控制寄存器
TICCNT 作为嘀嗒定时器时使用的寄存器(主要是RTOS时候会使用,其余不太用)
RTCALM 闹铃控制寄存器
ALM寄存器是主要闹钟的寄存器
BCD寄存器是最主要的使用时间的寄存器。
CURTICCNT 作为嘀嗒定时器使用的寄存器(一般不太使用)
3.2 BCD格式的年月日寄存器
注意:芯片手册中星期与日的寄存器地址写反了,需要兑换一下,闹钟与时钟的寄存器一样不详细介绍
星期:2位标识1-7
例
日:[5:4]位标识日的十位,[3:0]位表示日的个位
月:[4]位表示月份十位,[3:0]位表示月份个位
年:例2023中,寄存器只可记录023即最大到百位,对应[11:0]位,3个BCD码二进制数。
3.3 INTP中断挂起寄存器
3.4 RTCCON控制寄存器
CTLEN:1使能RTC,0关闭RTC。要去修改时间,需要先使能RTC,否则修改不了时间。
3.5 CURTICCNT 作为嘀嗒定时器使用的寄存器
4 RTC编程
interface.c
#include "exynos_4412.h"int main()
{unsigned int OldSec = 0, NewSec = 0;/*使能RTC控制*/RTCCON = RTCCON | 1;/*校准时间信息*/RTC.BCDYEAR = 0x023;RTC.BCDMON = 0x12;RTC.BCDDAY = 0x7;RTC.BCDWEEK = 0x31;RTC.BCDHOUR = 0x23;RTC.BCDMIN = 0x59;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;
}
注:改进部分,可以写一个int int_to_bcd(int time)格式的函数
5 练习
编程实现通过LED状态显示当前电压范围,并打印产生低压警报时的时间
注:
电压在1501mv~1800mv时,LED2、LED3、LED4、LED5点亮
电压在1001mv~1500mv时,LED2、LED3、LED4点亮
电压在501mv~1000mv时,LED2、LED3点亮
电压在0mv~500mv时,LED2闪烁,且每隔一秒钟向终端打印一次当前的电压值及当前的时间
代码
#include "exynos_4412.h"void Delay(unsigned int Time){while(Time--);}void Led_init(void)
{GPX2.CON = GPX2.CON & (~(0xF << 28)) | (0x1 << 28); //LED2 GPX2_7 outputGPX1.CON = GPX1.CON & (~0xF) | 0x1; //LED3 GPX1_0 outputGPF3.CON = GPF3.CON & (~(0xF << 16)) | (0x1 << 16); //LED4 GPF3_4 outputGPF3.CON = GPF3.CON & (~(0xF << 20)) | (0x1 << 20); //LED5 GPF3_5 output
}void Led_on(int num){switch(num){case 2:GPX2.DAT = GPX2.DAT | (1 << 7);case 3:GPX1.DAT = GPX1.DAT | (1 << 0);case 4:GPF3.DAT = GPF3.DAT | (1 << 4);case 5:GPF3.DAT = GPF3.DAT | (1 << 5);default:break;}}void Adc_init(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;
}void Led_off(int num){switch(num){case 2:GPX2.DAT = GPX2.DAT & ~(1 << 7);case 3:GPX1.DAT = GPX1.DAT & ~(1 << 0);case 4:GPF3.DAT = GPF3.DAT & ~(1 << 4);case 5:GPF3.DAT = GPF3.DAT & ~(1 << 5);default:break;}}int main(){unsigned int AdcValue;unsigned int OldSec = 0, NewSec = 0;Adc_init();Led_init();/*使能RTC控制*/RTCCON = RTCCON | 1;/*校准时间信息*/RTC.BCDYEAR = 0x023;RTC.BCDMON = 0x12;RTC.BCDDAY = 0x7;RTC.BCDWEEK = 0x31;RTC.BCDHOUR = 0x23;RTC.BCDMIN = 0x59;RTC.BCDSEC = 0x50;/*禁止RTC控制*/RTCCON = RTCCON & (~(1));while(1){/*开始转换*/ADCCON = ADCCON | 1;/*等待转换完成*/while(!(ADCCON & (1 << 15)));/*读取转换结果*/AdcValue = ADCDAT & 0xFFF;/*将结果转换成实际的电压值mv*/AdcValue = AdcValue * 0.44;NewSec = RTC.BCDSEC;if((AdcValue >= 0) && (AdcValue <= 500)){Led_on(2);Led_off(3);Led_off(4);Led_off(5);/*打印转换结果*/if(OldSec != NewSec){printf("20%x-%x-%x %x %x:%x:%x,AdcValue = %dmv\n",RTC.BCDYEAR, RTC.BCDMON, RTC.BCDWEEK, RTC.BCDDAY, RTC.BCDHOUR, RTC.BCDMIN, RTC.BCDSEC,AdcValue); OldSec = NewSec;}}else if ((AdcValue > 500) && (AdcValue <= 1000)){Led_on(2);Led_on(3);Led_off(4);Led_off(5);}else if ((AdcValue > 1000) && (AdcValue <= 1500)){Led_on(2);Led_on(3);Led_on(4); Led_off(5); }else if((AdcValue > 1500) && (AdcValue <= 1800)){Led_on(2);Led_on(3);Led_on(4); Led_on(5);}}return 0;}
实验效果
相关文章:
lv11 嵌入式开发 RTC 17
目录 1 RTC简介 编辑2 Exynos4412下的RTC控制器 2.1 概述 2.2 特征 2.3 功能框图 3 寄存器介绍 3.1 概述 3.2 BCD格式的年月日寄存器 3.3 INTP中断挂起寄存器 3.4 RTCCON控制寄存器 3.5 CURTICCNT 作为嘀嗒定时器使用的寄存器 4 RTC编程 5 练习 1 RTC简介 RTC(…...
c语言指针详解(上)
目录 一、指针的基本概念和用法 二、指针运算 2.1 指针的自增和自减运算 2.2 指针的自增和自减运算 三、数组和指针 四、指针和函数 4.1 在函数中使用指针作为参数和返回值 4.1.1 使用指针作为函数参数 4.1.2 使用指针作为函数返回值 4.2 指针参数的传值和传引用特性 4.2.1 指针…...
如何删除mac苹果电脑上面的流氓软件?
在使用苹果电脑的过程中,有时候我们也会遇到一些不需要的软件。无论是因为不再需要,或者是为了释放磁盘空间,删除这些软件是很重要的。本文将为大家介绍怎样删除苹果电脑上的软件! CleanMyMac X全新版下载如下: https://wm.make…...
WordPress(11)给文章添加预计阅读时长
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、文件配置二、代码块1.引入库2.配置 single.php三、效果图前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了…...
周周爱学习之快速排序
快速排序,顾名思义,快速排序是一种速度非常快的一种排序算法 平均时间复杂度为O(),最坏时间复杂度为O()数据量较大时,优势非常明显属于不稳定排序 1.算法描述 每一轮排序选择一个基准点(pivot)进行分区 让小于基准点…...
国产接口测试工具APIpost
说实话,了解APIpost是因为,我的所有接口相关的文章下,都有该APIpost水军的评论,无非就是APIpost是中文版的postman,有多么多么好用,虽然咱也还不是什么啥网红,但是不知会一声就乱在评论区打广告…...
MySQL电商管理系统练习题及答案
一 、表结构 用户表(user):id(主键)、username、password、email、phone、age商品表(product):id(主键)、name、price、stock、description订单表(order):id(主键)、user_id(外键,关联用户表)、total_price、status、create_time…...
每日3道PWN(第二天)
ciscn_2019_n_1 参考: [BUUCTF-pwn]——ciscn_2019_n_1-CSDN博客 [BUUCTF]PWN5——ciscn_2019_n_1_ciscn_2019_n_4-CSDN博客 BUUCTF—ciscn_2019_n_1 1-CSDN博客 checksec一下 64位栈溢出 按f5查看main函数,双击可疑函数 发现含有命令执行的且发现fl…...
SAP STMS传输请求
一、概述 一般SAP项目上都会有六套系统,分别是: 测试环境-DEV系统 主要由100:沙盘系统:用于业务顾问配置 200:开发系统:用于开发ABAP写代码 300:测试系统:主要是单元测试、顾问自己…...
L1-009:N个数求和
目录 ⭐题目描述⭐ ⭐分析 ⭐程序代码 运行结果 ⭐文案分享⭐ ⭐题目描述⭐ 本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。 输入格式: 输入第一行给出…...
当发送“Hello,World”时,channel发生了什么?
一、Netty概述 1.Netty是什么? Netty 是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端。 2.Netty的地位怎么样? Netty 在 Java 网络应用框架中的地位就好比:Spring 框架在 JavaEE …...
服务器运行情况及线上排查问题常用命令
一、top命令 指令行: top返回: 返回分为两部分 (一)系统概览,见图知意 以下是几个需要注意的参数 1、load average: 系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分…...
Hadoop学习笔记(HDP)-Part.18 安装Flink
目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …...
LeetCode56. 合并区间
🔗:【贪心算法,合并区间有细节!LeetCode:56.合并区间-哔哩哔哩】 class Solution { public:vector<vector<int>> merge(vector<vector<int>>& intervals) {if(intervals.size()0){return intervals;…...
解决typescript报错:找不到名称xxx
现象: 原因:在同时导入默认导出和命名导出时,默认导出必须放在命名导出之前 下面的就是原始文件: 默认导出指: export default导出类型, import时无需大括号 命名导出指: 仅有export关键字…...
UVM中封装成agent
在验证平台中加入monitor时,看到driver和monitor之间的联系:两者之间的代码高度相似。其本质是因为二者 处理的是同一种协议,在同样一套既定的规则下做着不同的事情。由于二者的这种相似性,UVM中通常将二者封装在一起,…...
OSI七层模型与TCP/IP四层模型
一、OSI七层模型简述 OSI 模型的七层是什么?在 OSI 模型中如何进行通信?OSI 模型有哪些替代方案? TCP/IP 模型关于专有协议和模型的说明 二、七层模型详解(DNS、CDN、OSI) 状态码DNS nslookup命令 CDN whois命令 …...
QT 中 QProgressDialog 进度条窗口 备查
基础API //两个构造函数 QProgressDialog::QProgressDialog(QWidget *parent nullptr, Qt::WindowFlags f Qt::WindowFlags());QProgressDialog::QProgressDialog(const QString &labelText, const QString &cancelButtonText, int minimum, int maximum, QWidget *…...
学习ShardingSphere前置知识
学习ShardingSphere前置准备知识 一. SPI SPI(Service Provider Interface)是一种Java的扩展机制,用于实现组件之间的松耦合。在SPI模型中,服务提供者(Service Provider)定义了一组接口,而服务…...
读书笔记-《数据结构与算法》-摘要3[选择排序]
选择排序 核心:不断地选择剩余元素中的最小者。 找到数组中最小元素并将其和数组第一个元素交换位置。在剩下的元素中找到最小元素并将其与数组第二个元素交换,直至整个数组排序。 性质: 比较次数(N-1)(N-2)(N-3)…21~N^2/2交换次数N运行…...
Arduino驱动MLX90614红外测温传感器(温湿度传感器)
目录 1、传感器特性 2、测量方法 3、硬件原理图 4、控制器和传感器连线图...
Ubuntu上传文件到SMB共享文件夹
0. 前言 公司有一些数据共享文件夹,平时可以把开发的重要文件放到上面备份。本人开发使用ubuntu系统,共享文件夹是windows的形式,想通过命令的方式,方便快捷,还可shell脚本自动化。 1. 安装挂载库 sudo apt-get upd…...
【Linux】基础IO--重定向理解Linux下一切皆文件缓冲区
文章目录 一、重定向1.什么是重定向2.dup2 系统调用3.理解输入重定向、输出重定向和追加重定向4.简易shell完整实现 二、理解linux下一切皆文件三、缓冲区1.为什么要有缓冲区2.缓冲区的刷新策略3.缓冲区的位置4.实现一个简易的C语言缓冲区5.内核缓冲区 一、重定向 1.什么是重定…...
RINEX介绍
一、RINEX是什么 Receiver Independent Exchange Format (RINEX) 是一种用于存储、交换和处理全球定位系统 (GPS) 接收机观测数据的标准化文件格式。RINEX 格式由国际电信联盟 (ITU) 和国际GPS服务 (IGS) 组织共同开发和维护。它提供了一种通用的数据格式,使得不同…...
ROS-ROS通信机制-服务通信
文章目录 一、服务通信基本知识二、自定义srv三、C实现四、Python实现 一、服务通信基本知识 服务通信也是ROS中一种极其常用的通信模式,服务通信是基于请求响应模式的,是一种应答机制。也即: 一个节点A向另一个节点B发送请求,B接收处理请求…...
chown和chmod
chown和chmod都是在Linux和Unix系统中用于设置文件和文件夹权限的命令,但它们的功能和用途有所不同。 功能:chown主要用于修改文件或文件夹的所有者和所属组,而chmod则主要用于修改文件或文件夹的读写执行权限。用途:如果想要授权…...
【GPU】linux 安装、卸载 nvidia 显卡驱动、cuda 的官方文档、推荐方式(runfile)
文章目录 1. 显卡驱动1.1. 各版本下载地址1.2. 各版本文档地址1.3. 安装、卸载方式 2. CUDA2.1. 各版本下载地址2.2. 各版本文档地址2.3. 安装、卸载方式2.4. 多版本 CUDA 切换方式 1. 显卡驱动 1.1. 各版本下载地址 https://www.nvidia.com/Download/Find.aspx?langzh-cn 1…...
6页手写笔记总结信号与系统常考知识大题知识点
题型一 判断系统特性题型二 求系统卷积题型三 求三大变换正反变换题型四 求全响应题型五 已知微分方程求系统传递函数题型六 已知系统的传递函数求微分方程题型七 画出系统的零极点图,并判断系统的因果性和稳定性 (笔记适合快速复习,可能会有…...
Qt-QSplitter正确设置比例
简短版本: splitter->setSizes({1000, 2000}); // 这个值至少跟像素值设置的一样大,或者更大,例如x10倍详细版本: setSizes 官方介绍如下: Sets the child widgets’ respective sizes to the values given in the…...
一篇吃透大厂面试题,2024找工作一帆风顺。
🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…...
泰安网站制作/常见的营销手段
http://edu.csdn.net/course/detail/2798?locationNum13&fps1...
网站建设移动端是什么意思/免费云服务器
本篇文章朋友在上海游玩的时候突然想到的...之前就有想写几篇关于nullnull的文章,所以回家到之后就奋笔疾书的写出来发表了 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId709 每日一道理 谁说人与人隔着遥远的重洋,谁说心与心设着坚固的…...
有经验的合肥网站建设/软件公司
XSS的原理分析与解剖 001 前言: 《xss攻击手法》一开始在互联网上资料并不多(都是现成的代码,没有从基础的开始),直到刺的《白帽子讲WEB安全》和cn4rry的《XSS跨站脚本攻击剖析与防御》才开始好转。 我这里就不说什么xss的历史什么东西了,xss…...
中小网站建设都有哪些方案/网络营销学校
学习整理,部分描述来源于网络 1. 概述 1.1 定义 k近邻法(k-nearest neighbor,k-NN)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近…...
广西建设培训中心网站/软文自助发布平台系统
今天在用nobody跑 脚本时,报错:登录root su apache 报错: su: cannot set user id: 资源暂时不可用 以前也遇到过这种问题,apache账号突然不可用。当时找的原因是系统进程太多,kill几个进程就可以了。 根本原因是&…...
石家庄做网站那家好/百度极速版app下载
Hyper-v 虚拟机日志出现W32Time event ID 24 & 29警告,说明虚机时间同步出了问题。默认的域环境中,所有的客户端是和它登陆的域控制器进行时间同步,所有的域控制器和主要的域控制器(PDC)进行时间同步,主要的域控制器要么和本身…...