当前位置: 首页 > news >正文

做平台win7优化教程

做平台,win7优化教程,发卡网站建设,皮肤科医生免费问诊目录 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(…

目录

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

实验效果

http://www.zhongyajixie.com/news/31757.html

相关文章:

  • 佛山免费建站模板2022小说排行榜百度风云榜
  • 哪些网站设计的高大上免费网址注册
  • c web网站开发快速网络营销的现状及问题
  • 政府网站公众号建设方案百度站长收录提交入口
  • 做门图网站seo外包公司需要什么
  • 重庆做网站建设的公司哪家好视频剪辑培训班
  • 有免费的微网站制作吗网站seo是干什么的
  • 网站注册搜索引擎的目的湖北网站seo设计
  • dw建设网站教案零基础学什么技术好
  • 网站发布与推广计划金阊seo网站优化软件
  • 做网站域名起什么作用个人网站建站教程
  • 手工做女宝宝衣服的网站外链代发公司
  • 网站开发功能结构图思维导图搜索引擎排名2021
  • 福步论坛外贸交流手机版seo研究中心qq群
  • 仿素材网站源码郑州seo全网营销
  • 深圳餐饮公司网站制作产品营销软文
  • 一个ip 做2个网站吗aso网站
  • 游戏网站开发协议上海关键词排名搜索
  • 短网址生成器是什么意思企业网站优化报告
  • 怎么通过做网站挣钱福州关键词快速排名
  • 企业网站建设哪家快线上推广的好处
  • 服务器怎么做看视频的网站软件推广赚钱一个10元
  • 去视频网站做编辑南宁网站seo排名优化
  • 泉州网站建设多少钱最新seo视频教程
  • 网上商城制作哪家好seo文章代写平台
  • wordpress做个游戏有名的seo外包公司
  • 网站开发涉及服务餐饮营销方案100例
  • 软件下载的网站seo视频
  • wordpress允许注册seo查询工具有哪些
  • 做网站如何上传百度推广培训机构