MSP430F5529 (八)实时时钟RTC
RT0IP:预分频器0中断间隔。 000-111,分别表示2、4、8、16、32、64、128、256分频 RT0PSIE:预分频定时器0中断允许 0:中断不允许 1:中断允许 RT0PSIFG:预分频定时器0中断标志 0:没有定时事件发生 1:有定时事件发生 RTCPS1CTL预分频定时器1控制寄存器(16位寄存器) RT1SSEL:预分频定时器1时钟源选择位。选择时钟源输入到RT1PS计数器。在RTC日历模式该位不用关心,因为RT1PS时钟输入自动设置为RT0PS的输出。 00:ACLK 01:SMCLK 10:从RT0PS输出 11:从RT0PS输出 (其余项同RTCPS0CTL) 上面的都为控制寄存器,操作比较复杂,下面讲到的都是数值寄存器。 RTCNT1:RTC计数寄存器1,计时器模式 RTCNT2:RTC计数寄存器2,计数器模式 RTCNT3:RTC计数寄存器3,计数器模式 RTCNT4:RTC计数寄存器4,计数器模式 RTCSEC:秒寄存器。BCD/BIN 先说明一下BCD/BIN的意思(下面同理) 前面提到可以控制日历模式的数值寄存器中的数值用BCD码或者二进制码表示。以RTCSEC为例: 当选作二进制模式时:(低6位就可以表示秒1-60) 当选作BCD模式时:(低4位表示秒的各位0-9;4-6位表示秒的十位0-6,高位不用时默认为0) RTCMIN:分寄存器,BCD/BIN RTCHOUR:时寄存器,BCD/BIN RTCDOW:星期日数寄存器,因为只有1-7,所以无所谓BCD/BIN了 RTCDAY:日寄存器,BCD/BIN RTCMON:月寄存器,BCD/BIN RTCYEARL:年低字节寄存器,个年位以及十年位,BCD/BIN RTCYEARH:年高字节寄存器,百年位以及千年位,BCD/BIN RTCAMIN:分闹铃寄存器,BCD/BIN RTCAHOUR:时闹铃寄存器,BCD/BIN RTCADOW:星期闹铃寄存器 RTCADAY:日闹铃寄存器,BCD/BIN //上述4个闹钟寄存器的最高位都为使能位AE,置位时相应寄存器才有效 RT0PS:预分频定时器0计数值 RT1PS:预分频定时器1计数值 RTCIV:中断向量值寄存器(16位寄存器) 8.3RTC的各种操作流程 8.3.1计时器模式 (1). RTCMODE位置0,进入32位计时器模式; 从日历模式切换到计数器模式会将计数值寄存器(RCTNT1,RCTNT2,RCTNT3,RCTNT4)和预换算计数器(RT0PS,RT1PS)全部清零 (2). 选择时钟源,并设计二级分频; 计数器的时钟可源于ACLK、SMCLK或者是RT1PS的输出。当使用RT1PS的输出作为计数源的时候,一定要先将RT0PS,RT1PS的HOLD位清零,使其可以正常工作,然后再分别配置二者的分频数。 再者,两个预分频器RT0PS和RT1PS也可以作为独立的计数器来用(级联成16位也是可以的)。通过RT0IP和RT1IP可以设置间隔。比如,选择ACLK 32768HZ作为时钟,间隔设置为256,也就是说每当计数器计到32768/256=128的整数倍时,该标志位就会置位。 (3). 32位计数器是由4个8位计数器级联而成,这能提供8位、16位、24位、32位溢出间隔。RTCTEV位选择触发哪一个溢出间隔,通过设置RTCTEVIE位,一个RTCTEV发生能够触发一个中断。计数器RTCNT1到RTCNT4,每一个都可以单独的访问,并可能被写入。 (4). 如何关闭计数器。 为了简单一点,把所有HOLD位都置位,则可以保证在任何情况下都可以关闭32位计数器。 注意:对计数值寄存器写时,立即生效。 读时,如果该时钟与CPU时钟不同步,则需要暂停计数器来读数。或者通过多次读取,来软件判断哪个是正确值。 8.3.2 日历模式 当RTCMODE置位的时候,日历模式就被选中了。在日历模式中,实时时钟模块可选择以BCD码或者是十六进制提供秒、分、小时、星期、日期、月份和年份。日历会自动计算是否是闰年,这个算法可以精确到1901年到2099年。 (1). 时钟和预分频。 RT0PS必须源于ACLK,ACLK必须是32768Hz,。 RT0PS会自动进行256分频,然后其输出再接RT1PS,RT1PS在被自动128分频,最后提供的时钟信号就是间隔一秒了。从计数器模式切换到日历模式时,会将秒、分、小时、星期、年份全部置清零,会将日期和月份全部置1。另外,RT0PS和RT1PS也会被清零。(这里把这些状态暂定义为默认复位状态) (2). 日历寄存器编码格式。 当RTCBCD=1时,日历寄存器就会被选为BCD码格式。必须在时间设置之前选择好格式。改变RTCBCD的状态会使进入默认复位状态。 在日历模式下,RT0SSEL、RT1SSEL、RT0PSdiv、RT1PSdiv、RT0PSHOLD、RT1PSHOLD和RTCSSEL 位都可以被忽略。置位RTCHOLD则会停止实时计数器、分频计数器和RT0PS、RT1PS。 (3). 灵活的闹钟 用户可编程闹钟功能只有在日历模式运行的时候才有效。 每一个闹钟寄存器都包括一个闹钟使能位,AE可用来使能每一个闹钟寄存器。通过设置各式各样闹钟寄存器的AE位,可以生成多种闹钟。 比如说,一个用户需要在每一小时的15分钟(也就是00:15:00、01:15:
MSP430F5529实时时钟RT 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)