SP804定时器

SP804是两个定时器模块,作为APB总线从设备,可以被CPU访问编程:包括2个中断和2个32位递减计数器FRC。系统时钟PCLK用于APB总线访问寄存器;时钟TIMCLK用于递减技术器更新,频率小于系统时钟PCLK。在寄存器访问时,这两个时钟要同步。

功能描述

两个32位递减计数器有三种工作模式:

  1. 无限制模式,从最大值开始递减,当减小到0时,自动从最大值开始递减。这是默认模式。
  2. 周期定时器模式,从一个预设值开始递减,当减小到0时,产生中断,并重新装载预设值,又开始递减。这样产生一个固定周期的时钟中断。
  3. 单次定时器模式,与周期定时器相同类似,不同的是,产生一次中断后,就停止。如果需要产生新的定时器中断,软件要么清除控制器中的One Shot Count位(进入模式1或模式2),或者重新配置“加载预设值寄存器”。

操作

       每个定时器都有一组专属寄存器组,两个定时器的操作方法一样。写“加载预设值寄存器”,并在使能计数器后,计数器就会递减。如果计数器已经工作起来了,在递减过程中,重写加载预设值寄存器,会立即生效,计数器重新从预设值开始递减。如果写“后备加载预设值寄存器”,不会中断计数器当前过程;在周期定时器模式下,计数器只有递减到零后,才会重新加载新的预设值。

        计数器一旦递减到零,就会产生中断。通过清除寄存器可以清除中断。在单次定时器模式下,计数器递减到零后会停下来,除非计数器换成其他工作模式,或者软件重新定义预设值。在无限制模式下,计数器递减到零后又重新从最大值开始。在周期定时器模式下,计数器递减到零后又重新从加载预设值寄存器加载预设值,并接着递减,这样就周期性产生中断。在定时器控制寄存器中,设置计数器的工作模式。软件可以随时通过“数值寄存器”来获取当前计数器数值。复位后,计数器全部去能、中断全部清零、加载预设值寄存器全部清零。工作模式和分频设置为无限制模式,时钟分频位1。下面是无限制模式的功能框图:

 计数器时钟使能是由分频逻辑产生。计数器的使能用下面时序产生时钟:

  1. 系统时钟
  2. 系统时钟除以16
  3. 系统时钟除以256

 中断产生

        32位计数器一旦为零,就产生中断,只能通过写TimerXCleare寄存器去清除中断。当控制寄存器的中断使能位写零,中断就被屏蔽。无论是否屏蔽,中断状态都能从状态寄存器获取。        

        TIMINTC是两个计数器中断输出的“或”逻辑。

时钟

        计数器有两个时钟源,PCLK和TIMCLK。PCLK用于寄存器访问接口。TIMCLK用于分频逻辑和递减计数器。TIMCLK只有在TIMCLKEN为高时,才会有效。

        一般情况下,我们假设PCLK和TIMCLK是同步的。为了获取低频操作:

  1. PCLK和TIMCLK全部连接到PCLK,并且TIMCLKEN以所需要的频率拉高(但必须与PCLK同步)。
  2. TIMCLKEN直接拉高,要做一个PCLK的使能版本给TIMCLK。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值