第7章lpc2132系统结构资源内容摘要:

ldr pc,ResetAddr [0xe59ff018] ldr pc,UndefinedAddr . . . [0xb9205f80] dcd 0xb9205f80 [0xe51ffff0] ldr pc,0x7ffff030 [0xe59ff018] ldr pc,FIQ_Addr ResetAddr [0x8000008c] dcd 0x8000008c UndefinedAddr [0x80000040] dcd 0x80000040 . . . Nouse [0x00000000] dcd 0x00000000 IRQ_Addr [0x00000000] dcd 0x00000000 FIQ_Addr [0x8000004c] dcd 0x8000004c 异常向量表反汇编代码 8条指令的机器码累加和为 0,表示用户代码有效 • 有效用户代码的判别 [0x00000000] 跳转地址数据不在累加范围内 通过调整该保留字,使累加和为 0 实时时钟 • RTC内部结构 时钟发生器 预分频器 时间计数器 报警控制 = 时钟控制 增量中断控制 中断标志 报警寄存器 PCLK 产生秒时钟 时间寄存器组与报警设定值进行比较 有两类中断,一种是时间增量中断,一种是报警中断 时钟发生器 预分频器 时间计数器 报警控制 = 时钟控制 增量中断控制 中断标志 报警寄存器 PCLK • 寄存器描述 时钟发生器 预分频器 时间计数器 报警控制 = 时钟控制 增量中断控制 中断标志 报警寄存器 PCLK 时间计数器时钟发生器预分频器报警控制增量中断控制中断标志报警寄存器 所有寄存器大致可以分为三类: ▪时钟产生寄存器; ▪时间寄存器组; ▪中断产生控制; • 寄存器描述 时间计数器 = 时钟发生器 预分频器 时钟控制 报警控制 增量中断控制 中断标志 报警寄存器 PCLK 时钟产生寄存器组控制产生 RTC时间计数器需要的秒时钟信号。 —— 时钟产生寄存器组 名称 有效位 描述 访问 PREINT 13 预分频值,整数部分 读写 PREFRAC 15 预分频值,小数部分 读写 CCR 4 时钟节拍计数器 读写 CTC 15 时钟控制寄存器 只读 • 寄存器描述 —— 预分频寄存器 名称 有效位 描述 访问 PREINT 13 预分频值,整数部分 读写 PREFRAC 15 预分频值,小数部分 读写 CCR 4 时钟节拍计数器 读写 CTC 15 时钟控制寄存器 只读 名称 有效位 描述 访问 PREINT 13 预分频值,整数部分 读写 PREFRAC 15 预分频值,小数部分 读写 CCR 4 时钟节拍计数器 读写 CTC 15 时钟控制寄存器 只读 预分频值,整数部分 读写PREFRAC 15 预分频值,小数部分 读写 预分频器用于将任何频率高于 PCLK时钟分频产生。 这样就可以不管外设时钟的频率为多少, RTC总是以正确的速率运行。 预分频寄存器分为整数部分和小数部分,因此有可能某个时钟节拍多包含一个 PCLK周期,而某个节拍却少一个 PCLK周期。 但是每个时钟节拍的周期一定是32768个 PCLK周期。 • 寄存器描述 预分频整数部分为 13位有效位,小数部分为 15位有效位。 预分频整数部分的计算公式为: PREINT = int(PCLK / 32768) – 1 预分频小数部分的计算公式为: PREFRAC = PCLK – ((PREINT + 1) 32768) —— 预分频寄存器 名称 有效位 描述 访问 PREINT 13 预分频值,整数部分 读写 PREFRAC 15 预分频值,小数部分 读写 CCR 4 时钟节拍计数器 读写 CTC 15 时钟控制寄存器 只读 预分频值,整数部分 读写PREFRAC 15 预分频值,小数部分 读写 • 寄存器描述 —— 时钟控制寄存器 名称 有效位 描述 访问 PREINT 13 预分频值,整数部分 读写 PREFRAC 15 预分频值,小数部分 读写 CCR 4 时钟节拍计数器 读写 CTC 15 时钟计数寄存器 只读 时钟控制寄存器包含 4位有效位,它用于控制时钟分频电路的操作,包括启动 RTC和复位时钟节拍计数器 (CTC)等功能。 CCR 4 时钟控制寄存器 读写 位 功能 描述 0 CLKEN 时钟使能。 当该位为 1时,时间计数器使能。 为 0时,时间计数器被禁止,这时可对其初始化。 1 CTCRST CTC复位。 为 1时,时钟节拍计数器复位。 在 CCR的bit1变为 0之前,它将一直保持复位状态。 3 : 2 CTTEST 测试使能。 在正常操作中,这些位应当全为 0。 • 寄存器描述 —— 时钟计数寄存器 名称 有效位 描述 访问 PREINT 13 预分频值,整数部分 读写 PREFRAC 15 预分频值,小数部分 读写 CCR 4 时钟节拍计数器 读写 CTC 15 时钟计数寄存器 只读 时钟节拍计数器对预分频器的输出时钟进行计数,用于产生秒的时钟节拍。 它是一个只读寄存器,但它可通过时钟控制寄存器 (CCR)复位为 0。 CTC 15 时钟计数寄存器 只读 位 功能 描述 0 保留 用户程序不要向该位写入 1 15 : 1 时钟节拍计数器 对预分频器的时钟输出进行计数,每计满 32768个时钟,该寄存器复位,并向时间计数器发送一个秒脉冲 • 寄存器描述 时间计数器 = 时钟发生器 预分频器 时钟控制 报警控制 增量中断控制 中断标志 报警寄存器 PCLK 时间计数器组中包含当前的时间,它们分为两类:完整时间寄存器和分类时间寄存器。 —— 时间计数器 • 寄存器描述 时间计数器 = 时钟发生器 预分频器 时钟控制 报警控制 增量中断控制 中断标志 报警寄存器 PCLK —— 时间计数器 名称 有效位 描述 CTIME0 32 包含秒、分、时和星期。 CTIME1 32 包含日期(月)、月和年 CTIME2 32 包含日期(年) 在 完整时间寄存器 中,时间以一个比较完整的格式存储,程序只需要 3次读操作即可读出所有计数器值。 这些寄存器为只读寄存器。 • 寄存器描述 —— 时间计数器 名称 有效位 描述 CTIME0 32 包含秒、分、时和星期。 CTIME1 32 包含日期(月)、月和年 CTIME2 32 包含日期(年) 名称 有效位 描述 CTIME0 32 包含秒、分、时和星期。 CTIME1 32 包含日期(月)、月和年 CTIME2 32 包含日期(年) (0~59) — (0~59) — (0~23) — (0~6) — 取值范围 秒 保留 分 保留 小时 保留 星期 保留 功能 5:0 7:6 13:8 15:14 30:16 23:21 26:24 31:27 CTIME0 (1~28,29,30) — (1~12) — (0~4095) — 取值范围 日期 (月 ) 保留 月 保留 年 保留 功能 4:0 7:5 11:8 15:12 27:16 31:28 CTIME1 (1~365,366) — 取值范围 日期 (年 ) 保留 功能 8:0 31:9 CTIME2 这两个寄存器意义不同, (月 )表示当日在当月中的序号, (年 )表示当日在当年中的序号 • 寄存器描述 —— 时间计数器 分类时间寄存器 包含 8个寄存器,所有寄存器都可读可写。 名称 有效位 描述 SEC 6 秒值。 该值的范围为 0~ 59。 MIN 6 分值。 该值的范围为 0~ 59。 HOUR 5 小时值。 该值的范围为 0~ 23。 DOM 5 日期(月)值。 该值的范围为 1~ 28,29,30或 31(取决于月份以及是否为闰年)。 DOW 3 星期值。 该值的范围为 1~ 365(闰年为 366)。 DOY 9 日期(年)值。 该值的范围为 1~ 365。 MONTH 4 月值。 该值的范围为 1~ 12。 YEAR 12 年值。 该值的范围为 0~ 4095。 名称 有效位 描述秒值。 该值的范围为 ~。 分值。 该值的范围为 ~。 小时值。 该值的范围为 ~。 日期(月)值。 该值的范围为 ~ 或 (取决于月份以及是否为闰年)。 星期值。 该值的范围为 ~ (闰年为 )。 日期(年)值。 该值的范围为 ~。 月值。 该值的范围为 ~。 年值。 该值的范围为 ~。 注意 :这些日期的寄存器只能在适当的时间间隔处递增,而在定义的溢出点处复位。 为了使这些值有意义,它们不能进行计算且必须正确初始化。 其中 DOY寄存器需要单独初始化,也就是说该寄存器的值不会因为对年、月、日寄存器进行初始化而自动确定到一个正确 的值。 • 寄存器描述 时间计数器 = 时钟发生器 预分频器 时钟控制 报警控制 增量中断控制 中断标志 报警寄存器 PCLK RTC部件的中断分为两类,一类为 时间计数器的增量中断 ,由增量中断寄存器控制。 另一类为 报警匹配产生的中断 ,由报警屏蔽寄存器控制。 —— 中断产生寄存器 名称 描述 访问 ILR 中断位置寄存器 读写 CIIR 递增中断寄存器 读写 AMR 报警屏蔽寄存器 读写 报警寄存器组 设定报警时间 读写 • 寄存器描述 —— 中断产生寄存器 名称 描述 访问 ILR 中断位置寄存器 读写 CIIR 递增中断寄存器 读写 AMR 报警屏蔽寄存器 读写 报警寄存器组 设定报警时间 读写 名称 描述 访问 ILR 中断位置寄存器 读写 CIIR 递增中断寄存器 读写 AMR 报警屏蔽寄存器 读写 报警寄存器组 设定报警时间 读写 名称 描述 访问中断位置寄存器 读写递增中断寄存器 读写报警屏蔽寄存器 读写报警寄存器组 设定报警时间 读写位 功能 描述 0 RTCCIF 为 1时,表示计数器增量中断模块产生了中断。 向该位写入 1清除该中断标志。 1 RTCALF 为 1时,表示报警寄存器产生了中断。 向该位写入 1清除该中断标志位。 中断位臵寄存器是一个 2位的寄存器,它指出哪些模块产生中断,它实际上是一个中断标志寄存器。 • 寄存器描述 —— 中断产生寄存器 名称 描述 访问 ILR 中断位置寄存器 读写 CIIR 递增中断寄存器 读写 AMR 报警屏蔽寄存器 读写 报警寄存器组 设定报警时间 读写 计数器增量中断寄存器可使计数器每次增加时产生一次中断,比如设臵秒增加中断为 1,则每秒均产生一次中断。 在清除增量中断标志之前,该中断一直保持有效。 • 寄存器描述 —— 中断产生寄存器 名称 描述 访问 ILR 中断位置寄存器 读写 CIIR 递增中断寄存器 读写 AMR 报警屏蔽寄存器 读写 报警寄存器组 设定报警时间 读写 CIIR 功能 描述 0 IMSEC 为 1时,秒值的增加产生一次中断。 1 IMMIN 为 1时,分值的增加产生一次中断。 2 IMHOUR 为 1时,小时值的增加产生一次中断。 3 IMDOM 为 1时,日期(月)的增加产生一次中断。 4 IMDOW 为 1时,星期值的增加产生一次中断。 5 IMDOY 为 1时,日期(年)的增加产生一次中断。 6 IMMON 为 1时,月值的增加产生一次中断。 7 IMYEAR 为 1时,年值的增加产生一次中断。 • 寄存器描述 —— 中断产生寄存器 名称 描述 访问 ILR 中断位置寄存器 读写 CIIR 递增中断寄存器 读写 AMR 报警屏蔽寄存器 读写 报警寄存器组 设定报警时间 读写 报警屏蔽寄存器允许用户屏蔽任意的报警寄存器,被屏蔽的报警寄存器将不与时间计数器比较。 未被屏蔽的报警寄存器与时间计数器比较如果匹配,将产生中断。 该中断只有在从不匹配到匹配时才发生,可以避免中。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。