文档库 最新最全的文档下载
当前位置:文档库 › STM32技术参考手册第8章实时时钟(RTC)

STM32技术参考手册第8章实时时钟(RTC)

STM32技术参考手册第8章实时时钟(RTC)
STM32技术参考手册第8章实时时钟(RTC)

RTC

RTC实时时钟 什么是RTC实时时钟 在一个嵌入式系统中,通常采用RTC 来提供可靠的系统时间,包括时分秒和年月日等;而且要求在系统处于关机状态下它也能够正常工作(通常采用后备电池供电),它的外围也不需要太多的辅助电路,典型的就是只需要一个高精度的32.768KHz 晶体和电阻电容等。 S3C2410实时时钟的基本特性 实时时钟(RTC)单元可以通过备用电池供电,因此,即使系统电源关闭,它也可以继续工作。RTC 可以通过STRB/LDRB 指令将8 位BCD 码数据送至CPU。这些BCD 数据包括秒,分,时,日期,星期,月和年。RTC 单元通过一个外部的32.768KHz晶振提供时钟。RTC具有定时报警的功能。RTC 控制器功能说明: ●时钟数据采用BCD 编码 ●能够对闰年的年月日进行自动处理 ●具有告警功能,当系统处于关机状态时,能产生告警中断; ●具有独立的电源输入 ●提供毫秒级时钟中断,该中断可用于作为嵌入式操作系统的内核时钟

RTC实时时钟的结构框图 RTC模块构成 ●闰年产生器 这个模块可以根据BCDDATA,BCDMON,以及BCDYEAR的数据决定每个月的最后日期是28,29,30 还是31。一个8位的计数器只能显示两个BCD码,因此它不能判断00 年究竟是不是闰年。例如它不能够判断1900 年和2000 的差别。。为了解决这个问题,S3C2410内的RTC 模块中有一个固定的逻辑,用来支持2000 年为闰年。请注意虽然2000 年是闰年,但1900 年不是闰年。因此,S3C2410 中00 代表2000 年,而不是1900 年。 ●读/写寄存器 要求置高RTCON 寄存器的0 位来表示读和写RTC 模块中的寄存器。。为了显示秒,分,小时,日期,月和年,CPU 会从BCDSEC,BCDMIN,BCDHOUR,BCDDAY,BCDDATE,BCDMON,和BCDYEAR 寄存器读取数据。但是由于多个寄存器的读取,可能产生1 秒钟的偏离。例如,如果用户读取寄存器BCDYEAR 到BCDMIN,假设结果为1959 年,12 月,31 日,23 点,59 分。在用户读取BCDSEC 寄存器时,但如果结果是0,那么很有可能年,月,日,时,分已经变成了1960 年1 月1 日0 时0 分了。解决的方法是,当读取到的BCDSEC 等于0 时,用户应该在读取一次BCDYEAR到BCDSEC 的值。 ●备用电池 RTC可被备用电池驱动,备用电池通过RTCVDD引脚向RTC提供电压。当系统掉电时,RTC与CPU 之间的接口被阻塞,备用电池仅仅驱动振荡电路以及BCD计数器,这样可减少能量损耗。

RTC实时时钟

#include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include sbit SCK=P3^6; //时钟 sbit SDA=P3^4; //数据 sbit RST = P3^5;// DS1302复位 sbit LS138A=P2^2; sbit LS138B=P2^3; sbit LS138C=P2^4; bit ReadRTC_Flag;//定义读DS1302标志 unsigned char l_tmpdate[7]={0,0,12,15,5,3,8};//秒分时日月周年08-05-15 12:00:00 unsigned char l_tmpdisplay[8]; code unsigned char write_rtc_address[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c}; //秒分时日月周年最低位读写位 code unsigned char read_rtc_address[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d}; code unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //共阴数码管0-9 '-' '熄灭‘表 /******************************************************************/ /* 函数声明*/ /******************************************************************/ void Write_Ds1302_byte(unsigned char temp); void Write_Ds1302( unsigned char address,unsigned char dat ); unsigned char Read_Ds1302 ( unsigned char address ); void Read_RTC(void);//read RTC void Set_RTC(void); //set RTC void InitTIMER0(void);//inital timer0 /******************************************************************/ /* 主函数*/ /******************************************************************/ void main(void) { InitTIMER0(); //初始化定时器0 Set_RTC(); //写入时钟值,如果使用备用电池时候,不需要没每次上电写入,此程序应该屏蔽

基于STM32-RTC实时时钟

1 课程设计内容 本文将利用ALIENTEK 2.8寸TFTLCD模块来显示日期时间,实现一个简单的时钟。 2 STM32芯片简介 2006年ARM公司推出了基于ARMv7架构的Cortex系列的标准体系结构,以满足各种技术的不同性能要求,包含A、R、M三个分工明确的系列[1]。其中,A系列面向复杂的尖端应用程序,用于运行开放式的复杂操作系统;R系列适合实时系统;M系列则专门针对低成本的微控制领域。Cortex-M3是首款基于ARMv7-M体系结构的32位标准处理器,具有低功耗、少门数、短中断延迟、低调试成本等众多优点。它是专门为在微控制系统、汽车车身系统、工业控制系统和无线网络等对功耗和成本敏感的嵌入式应用领域实现高系统性能而设计的,它大大简化了编程的复杂性,集高性能、低功耗、低成本于一体[2]。半导体制造厂商意法半导体ST公司是ARM公司Cortex-M3内核开发项目一个主要合作方,2007年6月11日ST公司率先推出了基于Cortex-M3内核的STM32系列MCU。本章将简要介绍STM32系列处理器的分类、内部结构及特点,并对本设计中重点应用的通用定时器做进一步分析。 2.1 STM32 RTC时钟简介 STM32 的实时时钟(RTC)是一个独立的定时器。STM32 的 RTC 模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。 RTC 模块和时钟配置系统(RCC_BDCR 寄存器)是在后备区域,即在系统复位或从待机模式唤醒后 RTC 的设置和时间维持不变。但是在系统复位后,会自动禁止访问后备寄存器和 RTC,以防止对后备区域(BKP)的意外写操作。所以在要设置时间之前,先要取消备份区域(BKP)写保护。 RTC 的简化框图,如图 20.1.1 所示:

汇编语言实现实时时钟显示

汇编语言实现实时时钟显示 data segment msg db 'Current time is: ' hours db ?,? db ':' minutes db ?,? db ':' seconds db ?,?,0 oldint1c dd ? ;旧的入口参数 position dw 0 ;时间显示位置 color db 07h data ends code segment ;代码段 assume cs:code,ds:code start: mov ax,data mov ds,ax jmp run newint1c: push ax push bx push cx push dx push si push di push es mov ax,data mov ds,ax mov ax,0200h ;获取系统时间,ch→hours cl→minutes DH→seconds,均为BCD码格式 int 1ah ;时钟服务 mov al,ch lea si,hours ;时 call BCD mov al,cl lea si,minutes ;分

call BCD mov al,dh lea si,seconds ;秒 call BCD mov ax,0b800h ;显存地址,采用直接写显存的方法输出字符 mov es,ax ;es:di 指向显存地址 lea si,position ;设置时间显示位置 mov di,[si] lea si,msg disp: mov al,[si] inc si or al,al jz exit cld stosb inc di jmp disp exit: pop es pop di pop si pop dx pop cx pop bx pop ax jmp ds:oldint1c ;执行旧的中断服务程序 BCD proc push ax ;用于将BCD码转换为ASCII码入口al-BCD码 mov ah,al ;出口 shr ah,1 shr ah,1 shr ah,1 shr ah,1 and al,0fh add ax,'00' ;加上0的ASCII码 xchg ah,al mov [si],ax pop ax ret

RTC实时时钟芯片

RTC实时时钟芯片 RTC实时时钟芯片是一种计时器,可以由硬件集成电路来完成,也可以由单片机加程序来完成。实时时钟可以对秒、分、时、星期、日、月和年进行准确计时,具有闰年补偿功能,能够计时到2100年。

消费类电子(机顶盒、VCR),手持式装置(GPS、POS终端),医疗设备,办公设备,电信(路由器、交换机、服务器),电器设备,汽车,消费类电子,嵌入式时标,工业,电表。 DS3231集成了温度补偿晶体振荡器(TCXO)和晶体,电池备份输入用于支持连续计时,可编程方波输出,低电平有效复位输出。关键参数: 工作温度商业级:0°C至+70°C,具有2ppm精度; 工业级:40°C至+85°C,具有3.5pmm精度。 DS3231M是业内首款内置MEMS、带温度补偿的RTC,允许器件用于强烈震动的场合,不会由于晶体失效而导致产品故障。 DS3232相比较于DS3231将32kHz输出驱动器更改为推挽输出,省去一个外部上拉电阻,节省空间,够加快时钟的边沿速度,降低器件功耗。电池切换时,可通过32kHz位选择使能/禁止32kHz输出。DS3232的32kHz输出在关闭状态下驱动至低电平,DS3231的32kHz输出在关闭状态下为高阻输出。DS3232内部可通过2个CRATE位控制温度转换速率,这些位用于控制器件的采样率。采样率决定了对温度传感器进行数字转换的频率,以及补偿振荡器的时间间隔。降低采样率则降低了温度传感器的工作频率,从而降低整体功耗。此外,DS3232具有236字节的SRAM。

压检测功能和振荡停止检测功能,内置定时器可以产生周期性的定时中断信号,警报器用于定时报警,可设定天、日期、小时、分钟。工作电压范围:1.70V-5.5V。计时保持电压:1.15V-5.5V。此外,采用IIC接口,支持低功耗模式。 RX6110 频率输出功能:能选择输出频率,有32.768kHz, 1024Hz, 1Hz。 接口类型:IIC总线接口和SPI总线接口。 自动电源切换功能:当VDD低于1.6V失效时,内部电源自动切换到VBAT. 内置128位的RAM。 定时器功能:当事件出现时,定时器可以自动记录到TF-bit,并能通过/IRQ1 或/IRQ2引脚输出。 报警功能:当事件出现时,定时器可以自动记录到AF-bit,并能通过/IRQ1引脚输出。 工作电压范围:1.6V-5.5V。 计时保持电压:1.1V-5.5V。

RTC (实时时钟) 晶振设计指南

RTC (实时时钟) 晶振设计指南(适用于FM31系列,FM3808,FM30C256) 总体概述 FM31系列,FM3808,FM30C256集成了处理器外围器件,它集成了FRAM非易失性存储器和实时时钟于一体。实时时钟在VDD掉电以后自动切换到后备电源。在使用后备电源的情况下,实时时钟耗电量很少以便其可以长期工作。 本应用笔记提醒系统设计者在使用实时时钟时应注意的问题。 振荡器和晶体 任何实时时钟的核心都是晶振,它为分频计数器提供精确的与低功耗的时基信号,它可以用于产生秒、分、时、日等信息。为了确保时钟长期的准确性,晶振必须工作正常,不能受到干扰。 Figure 1. Crystal Hookup to RTC 除了晶体之外,所有必须的元件都被集成在器件之内。如果有额外的诸如电容和电阻等元件被连接到X1和X2引脚,晶振将不能正常工作。这种情况下,直流工作点将发生偏移,晶振频率也会偏移,甚至在上电时,晶振不能正常起振。具有10pF电容和10M阻抗的被动示波器探针也会影响晶振正常工作。 所有的32.768KHZ晶体都有等效电容。市场上最为普遍的32KHZ晶体有两种类型:6pF和12.5pF。在操作时,晶体必须符合推荐的容性特性。那就是说,X1/X2引脚的容性负载必须为6pF。所有的FRAM 实时时钟都设计使用6pF类型的晶体。 Figure 2. Simplified Oscillator Circuit 以上简化的晶振示意图显示了穿孔晶振与芯片内的C1和C2的连接。芯片内的这两个电容值为 12pF,它们和晶体一起工作。因此CLOAD值为 C1*C2/(C1+C2)或6pF.。两个电阻每个为1千欧,它可以调整相位以提高晶振的工作稳定性。  所有带有实时时钟的Ramtron外围器件都选择6pF晶体以在使用后备电源时实现最低功耗。一个12pF的晶体晶振的功耗是6pF晶体晶振的两倍。值得注意的是:晶振内的150nA电流源为电路提供一个低值的直流偏置电流。晶振可能由于噪音和X1/X2引脚上额外负载的影响而引起工作异常。 晶振频率测量 晶振32.768KHZ频率不能被直接监控。不能在X1和X2引脚上增加电容,也不可以用探头直接接触。以下推荐几种检测晶振频率的方法: 1、上电后将OSCEN位设为0。 2、在实时时钟控制寄存器中,(在FM30C256和FM3808中为Flages寄存器),将CAL位设置为1。这一操作将CAL:引脚(FM3808中的INT)变为512Hz的监控器。512Hz是晶振频率的64分频。 3、可使用频率计数器或其他精确频率测量仪器测量晶振频率(可使用数码示波器观察十个周期以上,而不是只观察一个周期)。你希望读到512Hz这一精确频率值,但只要测量值在511.975-512.025Hz之间,我们就可以认为晶振工作正常。CAL(4:0)寄存器位能够使实时时钟误差率小于2ppm。0.025Hz晶振误差大约引起50ppm 的时钟误差。.

stm32 实时时钟rtc配置

u8 RTC_Init(void) { //启用PWR和BKP的时钟(from APB1) RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); //后备域解锁 PWR_BackupAccessCmd(ENABLE); //备份寄存器模块复位 BKP_DeInit(); //外部32.768K其哟偶那个 //内部低速rc震荡器 RCC_LSICmd(ENABLE); /* Wait till LSE is ready */ /* Select LSE as RTC Clock Source */ RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI); //RTC开启 RCC_RTCCLKCmd(ENABLE); //开启后需要等待APB1时钟与RTC时钟同步,才能读写寄存器 RTC_WaitForSynchro(); //读写寄存器前,要确定上一个操作已经结束 RTC_WaitForLastTask(); //设置RTC分频器,使RTC时钟为1Hz //RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) RTC_SetPrescaler(32767); //等待寄存器写入完成 RTC_WaitForLastTask(); //使能秒中断 RTC_ITConfig(RTC_IT_SEC, ENABLE); //等待写入完成 RTC_WaitForLastTask(); return 0;

}

单片机实验报告 实时时钟

单 片 机 实 验 报 告 姓名:姓名:学号:学号:

一、实验要求: 1. 设计一个实时时钟,四个八段数码管显示格式为:XX.XX(小时/分钟,24小时计时法);使用一个LED用来显示秒的状态,显示规则为:以1Hz频率闪烁,既亮灭一次为一秒钟,500毫秒亮、500毫秒灭。 2. 实时时钟可以通过3x4键盘设置初始值。数字键用于输入数值,sfb0键为设置键,sfb1键为开关键。 3. 设置初始值的流程:先按下sfb0键,四个数码管显示内容变为全“0”,并以1HZ频率开始闪烁并等待键盘输入小时、分钟数值(其中小时2位数,分钟2位数),输入完毕后,实时时钟开始以新输入的时间值开始计时。 4. 开关键的使用方法:在计时模式下按sfb1键一次,时钟停止计时,时间数值停留在按键那刻;在停止计时模式下,按sfb1键一次时钟开始继续计时。 5. 定时闹铃功能(加分功能,可选做):按sgp0_key键,进入闹铃值设置模式,四个数码管显示内容变为全“0”,并以1HZ频率开始闪烁并等待键盘输入小时、分钟数值(其中小时2位数,分钟2位数),此时计时仍然运行,输入完毕后,显示内容恢复为计时值。当时钟计时到达闹铃值,驱动蜂鸣器鸣响8次。 6. 增加通过RS232接口,更改时钟当前时间的功能。 二、实验程序说明: 对实验按键和存储位置的说明语句: 1.创建一个新工程,在该工程的器件编辑器(Device Editor)中选择定时器模块,然后将其按要求放置,如图所示。

图定时器模块放置图 2.配置全局资源。单击参数内容方框里的下拉箭头,选择合适的参数值,便可以更改工程中默认的全局资源。此实验配置的全局资源如图所示。 图全局资源配置 3.按图配置Timer8定时器模块的参数。

STM32实时时钟RTC按键修改时间

User文件夹下main.c #include "sys.h" #include "usart.h" #include "delay.h" #include "led.h" #include "key.h" #include "exti.h" #include "wdg.h" #include "timerx.h" #include "adc.h" #include "rtc.h" #include "12864.h" #include "ov7670.h" #include "usmart.h" #include "enc28j60.h" #include "uip.h" #include "uip_arp.h" #include "tapdev.h" #include "timer.h" #include "math.h" #include "string.h" #include "syn.h" //Mini STM32开发板扩展实验21 //ENC28J60网络模块实验 //正点原子@ALIENTEK //技术论坛:https://www.wendangku.net/doc/cc12130980.html, //广州市星翼电子科技有限公司 void uip_polling(void); void Display_Time(void); void received_date(u8 *str); u16 Process_date(u8 q,u8 b,u8 s,u8 g); #define BUF ((struct uip_eth_hdr *)&uip_buf[0]) u8 t,Addres_1=10,Addres_2=1,Addres_3=168,Addres_4=192; int main(void) { Stm32_Clock_Init(9); //系统时钟设置 //usart_init(72,9600); //串口初始化为9600 USART3_Init(36,9600); USART2_Init(36,9600); delay_init(72); //延时初始化 LED_Init(); //初始化与LED连接的硬件接口LCD12864_InitPort(); //初始化LCD LCD12864_Init();

RTC实时时钟方案

实时时钟的缩写是RTC(Real_TimeClock)。RTC是集成电路,通常称为时钟芯片。我们这里除了要提供精确的实时时间,而且需要在主电源掉电时,还可以工作,需要外加电池供电。 常用的时钟芯片分为并行接口和串行接口两大类,并行时钟芯片数据传送速率较快,但连线多,不利于缩小产品体积,且占用较多的CPU端口资源。串行时钟芯片只需要占用CPU 的2-3条I/O口线,可大大减小产品体积线接口。 DS1302是由美国DALLAS公司推出的具有涓流充电能力的低功耗实时时钟芯片。DS1302可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能,工作电压为2.0-5.5V。这种电路接口简单、价格低廉、使用方便,被广泛采用。 DS1302的引脚排列,其中Vcc2为主电源,VCC1为后备电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据传送的方法。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc>2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),SCLK为时钟输入端。下图为DS1302的引脚功能图: 下面给出仿真图:

rtc实时时钟

《RTC实时时钟的开发》 1、建立工程 运行QUARTU SⅡ9.0(以下简称Q2),建立工程,File→New Project Wizard,如下图 点击New Project Wizard后弹出指定工程名的对话框,根据需要可进行如下填写 点击Next,出现添加工程文件的对话框

EP2C5Q208C8. 硬件选择完毕后,点击Next,出现以下对话框,这里不进行设置

最后得到一个新工程总结,对话框中的信息即为以上的设置总结 点击Finish。到此为止,工程已经建立完成,接下来需要建立一个Block Diagram/Schematic File,点击Fil e New,如下图所示

点击OK,工程中出现了一个Block1.bdf文件 构建NIO SⅡ软核 接下来,我们进入了构建软核环节,点击Tools SOPC builder或者下图红圈标注的图标 点击以后,SOPC Builder运行,界面如下图所示

将系统的名称命名为core,目标硬件描述语言选择Verilog,然后点击OK, clk_0为时钟名称,50.0为时钟值,单位为MHz,我们可以对它进行修改,用鼠标左键双击50.0,将其改为100.0,这是我们的软核时钟就是100MHz,接下来我们要建立NIO SⅡProcessor。 构建CPU模块 用鼠标左键双左侧边框中的NIO SⅡProcessor 点击后出现如下对话框,选择速度最快功能最多的NIO SⅡ/f。 点击Next,将红圈处选为None,也就是关闭Data Cache。

连续点击Next,直到出现下图为止 这里设置调试级别,级别越高,功能越多,占用的资源也就越多,我们选择级别1,点击Finish,结束NIO SⅡProcessor的建立。 建立SDRAM模块 接下来建立SDRAM控制器

RCT实时时钟详细介绍_华清远见

RCT实时时钟详细介绍 在说道正文之前,我们先要对RCT实时时钟坐一个简单的描述。实时时钟(Real-Time Clock)是PC主板上的晶振及相关电路组成的时钟电路的生成脉冲,RTC经过8254电路的变频产生一个频率较低一点的OS(系统)时钟TSC,系统时钟每一个cpu周期加一,每次系统时钟在系统初起时通过RTC初始化。8254本身工作也需要有自己的驱动时钟(PIT)。RCT实时时钟详细介绍请往下看。 1.1 RTC介绍 在一个嵌入式系统中,通常采用RTC 来提供可靠的系统时间,包括时分秒和年月日等,而且要求在系统处于关机状态下它也能够正常工作(通常采用后备电池供电)。它的外围也不需要太多的辅助电路,典型的就是只需要一个高精度的 32.768kHz晶体和电阻电容等,如图10-8所示。 图10-8 RTC外接电路 1.2 RTC控制器 实时时钟(RTC)单元可以通过备用电池供电,因此,即使系统电源关闭,它也可以继续工作。RTC 可以通过STRB/LDRB 指令将8 位BCD 码数据送至CPU。这些BCD 数据包括秒、分、时、日期、星期、月和年。RTC 单元通过一个外部的32.768kHz晶振提供时钟。RTC具有定时报警的功能,如图10-9所示。RTC 控制器功能说明:

图10-9 RTC控制器 时钟数据采用BCD 编码。 能够对闰年的年月日进行自动处理。 具有告警功能,当系统处于关机状态时,能产生告警中断。 具有独立的电源输入。 提供毫秒级时钟中断,该中断可用于作为嵌入式操作系统的内核时钟。 1.3 RTC控制器寄存器详解 如表10-9所示为相关寄存器描述。 表10-9 RTC控制寄存器

rtc实时时钟代码

/****************************************************************************** * * 标题: 试验数码管显示时钟* * * * 通过本例程了解DS1302时钟芯片的基本原理和使用,理解并掌握DS1302时钟芯片 * * 驱动程序的编写以及实现数字字符在数码管中的显示。 * * 注意:JP1302跳线冒要短接。 * * 请学员认真消化本例程,懂DS1302在C语言中的操作 * ******************************************************************************* */ #include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include sbit SCK=P3^6; //时钟 sbit SDA=P3^4; //数据 sbit RST = P3^5;// DS1302复位 sbit LS138A=P2^2; sbit LS138B=P2^3; sbit LS138C=P2^4; bit ReadRTC_Flag;//定义读DS1302标志 unsigned char l_tmpdate[7]={0,0,12,15,5,3,8};//秒分时日月周年08-05-15 12:00:00 unsigned char l_tmpdisplay[8]; code unsigned char write_rtc_address[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c}; //秒分时日月周年最低位读写位 code unsigned char read_rtc_address[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d}; code unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //共阴数码管0-9 '-' '熄灭‘表 /******************************************************************/ /* 函数声明*/ /******************************************************************/

实时时钟实验

实时时钟实验 一.实验目的 了解实时时钟的硬件控制原理及设计方法。 掌握 S3C2410X 处理器的RTC 模块程序设计方法。 二.实验设备 硬件:Embest EduKit-IV 平台,ULINK2 仿真器套件,PC 机; 软件:μVision IDE for ARM 集成开发环境,Windows 98/2000/NT/XP。 三.实验内容 学习和掌握Embest ARM 教学实验平台中RTC 模块的使用,编写应用程序,修改时钟日期及时间的设置,以及使用EMBEST ARM 教学系统的串口,在超级终端显示当前系统时间。 四.实验原理 1. 实时时钟(RTC) 实时时钟(RTC)器件是一种能提供日历/时钟、数据存储等功能的专用集成电路,常用作各种计算机系统的时钟信号源和参数设置存储电路。RTC 具有计时准确、耗电低和体积小等特点,特别是在各种嵌入式系统中用于记录事件发生的时间和相关信息,如通信工程、电力自动化、工业控制等自动化程度高的领域的无人值守环境。随着集成电路技术的不断发展,RTC 器件的新品也不断推出,这些新品不仅具有准确的RTC,还有大容量的存储器、温度传感器和A/D 数据采集通道等,已成为集RTC、数据采集和存储于一体的综合功能器件,特别适用于以微控制器为核心的嵌入式系统。 RTC 器件与微控制器之间的接口大都采用连线简单的串行接口,诸如I2C、SPI、MICROWIRE 和CAN 等串行总线接口。这些串口由2~3 根线连接,分为同步和异步。 2. S3C2410X 实时时钟(RTC)单元 S3C2410X 实时时钟(RTC)单元是处理器集成的片内外设。由开发板上的后备电池供电,可以在系统电源关闭的情况下运行。RTC 发送8 位BCD 码数据到CPU。传送的数据包括秒、分、小时、星期、日期、月份和年份。RTC 单元时钟源由外部32.768KHz 晶振提供,可以实现闹钟(报警)功能。 S3C2410X 实时时钟(RTC)单元特性: BCD 数据:秒、分、小时、星期、日期、月份和年份 闹钟(报警)功能:产生定时中断或激活系统 自动计算闰年 无 2000 年问题 独立的电源输入 支持毫秒级时间片中断,为 RTOS 提供时间基准 读/写寄存器 访问 RTC 模块的寄存器,首先要设RTCCON 的bit0 为1。CPU 通过读取RTC 模块中寄存器BCDSEC、BCDMIN、BCDHOUR、BCDDAY、BCDDATE、BCDMON 和 BCDYEAR 的值,得到当前的相应时间值。然而,由于多个寄存器依次读出,所以有可能产生错误。比如:用户依次读取年(1989)、月(12)、日(31)、时(23)、分(59)、秒(59)。当秒数为1 到59 时,没有任何问题,但是,当秒数为0 时,当前时间和日期就变成了1990 年1 月1 日0 时0 分。这种

相关文档