×
单片机 > 单片机程序设计 > 详情

mini2440定时器学习笔记

发布时间:2020-08-27 发布时间:
|
    S3C2440有5个16位定时器,定时器0、1、2和3有PWM功能(因此这4个定时器也被称为PWM定时器),都有一个输出引脚,定时器4是一个内部定时器,无外部输出引脚。
    定时器的时钟源是PCLK,然后通过内部的两级分频器分频得到定时器工作所需要的频率。其中,定时器0、1公用一个8位的第一级预分频器prescaler 0,定时器2、3、4公用另一个8位的第一级预分频器prescaler 1;每个定时器都有一个与之对应的第二级分频器clock divider如下图所示

虽然定时器较多,但工作原理都是相同的,只需要理解一个定时器的工作原理即可。对于某一个定时器,其内部结构原理图如图二所示。缓存寄存器TCMPBn和TCNTBn用于缓存定时器n的比较值和初始值;TCON用于控制定时器的开启与关闭;通过读取寄存器TCNTOn得到定时器当前计数值。
 




                                     定时器工作原理概述:
  ①首先,将定时器的比较值和初始值装入寄存器TCMPBn和TCMPBn中
  ②然后,设置定时器控制寄存器TCON,启动定时器。此时,TCMPBn和TCNTBn中的值会加载到寄存器TCMPn和TCNTn中。
  ③此时,定时器会减1计数,即TCNTn进行减1计数,当TCMPn=TCNTn时,TOUTn引脚输出相反。
 
                                          定时器初始化
  ① 定时器时钟频率(比如定时器时钟频率为50,则1秒钟计数寄存器减去50;为100,则1秒钟计数寄存器减去100);
  ② 设置定时器计数值(比如计数初值为100,而定时器时钟频率为50,则两秒后会产生中断,比如引脚输出相反电平);
  ③ 设置中断处理函数
 
 
 
    ①时钟频率初始化:定时器的时钟频率=PCLK/(prescaler+1)/(divider value)
其中: prescaler value=0~255 (它的值由TCFG0寄存器设置,如下图)
       divider value=2,4,8,16 (它的值由TCFG1寄存器设置,如下图)
 
TCFG0 描述 初始值
保留 [31:24]   0x00
Dead zone length [23:16] 此8位决定死区长度。死区长度的单位时间等于定时器0的单位时间

 
0x00
Prescaler 1 [15:8] 此8位决定定时器2,3,4的预标定器值 0x00
Prescaler 0 [7:0] 此8位决定定时器0,1的预标定器值 0x00

 

 
 
      ②计数值初始化:这两个寄存器存放的是设定的计数比较值,直接对其赋值即可.下面以定时器0为例:
     TCMPB0 描述 初始值
Timer 0 computer buffer register [15:0] Set compare buffer value for Timer0 0x00000000
 
 
    TCNTB0 描述 初始值
Timer 0 count buffer register [15:0] Set count buffer value for Timer 0 0x00000000
 
     ③设置中断处理函数,自己编写。
 
例1:结合上面讲解可知,定时器0的输入时钟是经过PCLK分频的得到的,下图展示了其产生过程。

-------------------------------------分割线---------------------------------------------------

分析:在上题中出现了TCFG1和TCFG0两个定时器配置寄存器,其中TCFG0配置寄存器控制第一级分频器prescaler的分频系数,TCFG1配置寄存器控制多路选择开关,选择第二级分频器divider的分频系数。具体如下图所示:

 
-----------------------------------------分割线---------------------------------------------------




 
 -----------------------------------------分割线--------------------------------------------------
例2:PCLK为50MHz,请设置适当的分频系数,使定时器0的输入时钟为62.5kHz。
答:已知PCLK为50MHz,则50MHz/62.5kHz=800,即需要对PCLK进行800分频。所以,使第一级分频器的分频系数为100,第2级的分频系数为8即可满足要求。最后,只需要将分频系数写入定时器控制寄存器中相应的位即可,代码如下:
  rTCFG0&=~(0xFF);将TCFG0的低8位清零
  rTCFG0|=99;因为分频系数=prescaler+1,即prescaler+1=100,所以,prescaler value=99
 rTCFG1&=~(0xF);将TCFG1的低4位清零
  rTCFG1|=0x02;将TCFG1的低4位赋值为0x02,即选择8分频输出
关键字:mini2440  定时器 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
浅谈msp430f5529入门(2)----时钟配置.例程分析