定时器功能介绍
在控制系统中,常常要求有一些实时时钟以实现定时或者延时控制,如定时中断、定时检测、定时扫描等等,也往往要求有计数器,对外部事件进行计数。要实现定时或者延时功能,一般有三种方法:
软件定时——让软件循环执行一段程序,程序本身并无执行目的,而是通过执行程序延时固定的时间,也就是以前的程序中经常使用的延时程序。这种方法降低了 cpu 的利用率。
不可编程硬件定时——如外部芯片 555 时基电路,通过外部阻容,达到一定的延时功能,改变阻容大小可以改变延时长度。这种定时器取决于硬件,设定好以后不能通过软件更改。
可编程定时器——这种定时器的定时值可以通过软件确定和修改,使用灵活
本开发板上用的BF592处理器具有3个通用定时器、1个内核定时器和一个看门狗定时器。
内核定时器用于各种系统定时功能的周期性中断,内核定时器工作在内核时钟频率下(CCLK),它包括4个内核MMR,分别是:定时器控制寄存器(TCNTL),定时器计数寄存器(TCOUNT),定时器周期寄存器(TPERIOD)和定时器定标寄存器(TSCALE)
看门狗定时器用来实现软件看门狗功能,如果在该定时器被软件更新之前定时时间到,软件看门狗就会产生一个事件给BF592内核,如此可以改善程序的可靠性。根据看门狗定时器的编程,产生的时间可以是复位、非屏蔽中断或者普通中断。
3个通用定时器都包括5个寄存器,而且可以设置为以下任何一种工作模式:
脉宽调制模式(PWM_OUT);
脉宽计数及捕获模式(WDTH_CAP);
外部事件计数器模式(EXT_CLK)。
3个通用定时器分别都有一个专用的双向管脚:TMRx。由于BF592中这些TMRx跟IO口是复用的,所以要使用这个脚当TIMER功能输入输出,必须通过寄存器把BF592对应的管脚配置成TIMER脚,该管脚在PWM_OUT模式下作为输出管脚,而在WDTH_CAP和 EXT_CLK模式下是输入管脚。当使用内部时钟时,时钟源是BF592的系统时钟(SCLK)。
通用定时器寄存器如下: