1 定时器的操作原理
F28335有3个32位的通用定时器,分别时TIMER0,TIMER1,TIMER2 。
我们一般只使用定时器0,在特殊的实时操作系统BIOS时需要用定时器TIMER1和TIMER2 ,但是如果没有使用实时操作系统,3个定时器都可以使用。
下一篇文章里会有完整的定时器0的配置过程和代码。
下图位定时器功能框图:
定时器中断结构:
定时器的中断配置过程按照这个图来进行,同上面文章中断配置中一样。
2 定时器的计数过程
定时器有一个预分频模块和定时/计数模块,这两个模块决定了定时器的周期和频率。
预分频模块有:一个16位的定时器分频寄存器(TDDR),一个16位预定标寄存器(PSC)
定时/计数模块:一个32位的周期寄存器(PRD),一个32位的计数寄存器(TIM)
计数方式:当系统时钟来一个脉冲,预定标寄存器减1,当PSC减到0后,PSC产生下溢的信号。然后就会向计数器TIM借位,同时PSC会重新装载TDDR内存的值。当TIM减到0产生下溢的时候,计数寄存器会重载周期寄存器PRD的值,同步产生一个中断信号给CPU。
小结:定时器是通过不断的减1,当PSC减到0,重新装载TDDR,当TIM减到0,重新装载PRD值,总共减TDDR*PRD总值。
3 定时器的相关寄存器
定时控制寄存器 TIMERxCTR
预定标寄存器 TIMERxTPR TIMERxTPRH
位 | 名称 | 功能描述 |
15~8 | PSC | PSC保存当前定时器的预定标值。PSH大于零时,每个时钟周期都会减1,在PSCH减为0,PSC使用TDDR内的值重新装载,定时计数寄存器减1。可以读取PSC内的值,但是不可以直接写,只能通过TDDR来装载。 |
7~0 | TDDR |
CPU定时器分频寄存器 每个TDDR+1个定时器时钟源,定时器计数器寄存器TIM减1。当PSC=0时,TDDR内的值重新装载如PSC。复位时TDDR清零, |
定时/计数器 TIMERxTIM
定时周期寄存器 TIMERxPRD