原创 【TI博客大赛】TI C2000 TMS320F28335定时器配置简介

2012-11-19 19:34 5789 12 14 分类: 处理器与DSP

    写在最前,不喜请略过。本博文的主要内容已在QQ空间、人人网、网易博客、百度空间等平台发表过,作者为Mr_D_prince(斌斌-龙臻),也就是本人,前两者均为我在非技术论坛的昵称。在技术论坛我更喜欢newofcortexm3这个昵称,原因无他,我就是个技术新人。之所以文章类型为什么是整理,是因为博文的主要内容均来自TI相关的技术手册,我只是做了下解读或者整理。

    TMS320F28335的CPU Time有三个,分别为Timer0Timer1Timer2,其中Timer2是为操作系统DSP/BIOS保留的,当未移植操作系统时,可用来做普通的定时器。这三个定时器的中断信号分别为TINT0, TINT1, TINT2,分别对应于中断向量INT1INT13INT14图1为定时器的结构框图,图中TIMHTIM为计数寄存器,PRDHPRD为周期寄存器,AHA的形式表示一个32位的寄存器,是由两个16位的寄存器构成,AH是高16位,A是低16位。

20121117152705182.jpg

CPU定时器的计数复位时,计数寄存器TIMHTIM加载周期寄存器PRDHPRD的值,经历一个计数器时钟时,TIMHTIM内的值就减1,一直减到0,这时产生定时器周期中断事件,并重新装载PRDHPRD的值,重新开始计数。置于每隔多少时间,定时器计数器才会减1由预定标寄存器TPRHTPR来决定。TPRHTPR这两个寄存器由两部分组成,高8位为定时器预定标计数器PSC,低8位是定时器分频TDDR。也即是说,TPRH是由PSCHTDDRH构成,而TDDRPSCTDDR构成。且其工作的原理与定时器计数器类似,复位时,PSCHPSC加载TDDRHTDDR的值,然后经过一个CPU时钟,PSCHPSC的值减1,当PSCHPSC的值减到0时,会再次装载TDDRHTDDR的值,并且产生一个计数器时钟,TIMHTIM1

以上寄存器测值在配置函数ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period)中设置。形参Freq为定时频率,Period为计时周期。假若Freq15Period1000000,则时间t = 15*1000000/150M = 0.1s (系统时钟频率为150M)。不过这个算式的成立是有条件的,这个条件就是以下两条语句:

Timer->RegsAddr->TPR.all = 0

Timer->RegsAddr->TPRH.all = 0

上文曾提及,定时器的计数时钟是有预定标寄存器TPRHTPR决定的。CpuTimerxRegs.TPR.all = 0 CpuTimerxRegs.TPRH.all = 0这两句话决定了1个时钟源周期为定时器的时钟周期,若CpuTimerxRegs.TPR.all = yCpuTimerxRegs.TPRH.all = 0,则计y+1个时钟周期为定时器的时钟周期。X表示0,1,2中的任意值。

因此,真正的定时时间为:time =TPRH:TPR/SYSCLKOUT*Freq*Peroid。只有当TPRHTPR=0时,time =Freq*Peroid/SYSCLKOUT。另外,在定时器配置函数中,

Timer->RegsAddr->TCR.bit.TSS = 1 表示停止定时器 ;

Timer->RegsAddr->TCR.bit.TRB = 1 表示重装定时器; 

Timer->RegsAddr->TCR.bit.FREE = 1 表示定时器自由运行; 

Timer->RegsAddr->TCR.bit.TIE = 1 表示使能定时器中断。

如果要利用定时器产生一定周期的时间中断,别忘了在主函数中设置响应的中断向量即可。

 

文章评论2条评论)

登录后参与讨论

用户1739657 2014-5-7 15:07

学习了

用户377235 2013-7-28 16:21

呵呵

yxrlh327_818573914 2013-1-2 21:45

讲解清晰,学习了

用户377235 2012-11-19 14:30

字体看的不舒服,希望调整下
相关推荐阅读
用户606080 2013-04-01 16:20
[博客大赛]MSP-EXP430FR5739实验板初体验
    本文由Ken Lee独立整理完成,首发于QQ空间,转载请注明作者与出处。作者水平有限,难免存在错误,不足之处请指正。由于个人原因,原署名斌斌-龙臻,Mr_D_prince不再使用,由Ken L...
用户606080 2013-04-01 11:47
[博客大赛]FRAM
本文由Ken Lee独立整理完成,首发于QQ空间,转载请注明作者与出处。作者水平有限,难免存在错误,不足之处请指正。由于个人原因,原署名斌斌-龙臻,Mr_D_prince不再使用,由...
用户606080 2013-02-25 18:09
评论:@BonnieBaker's Blog 博客中提到的“Bruce Trump系列:为什么运算放大器会发生振荡——两种常见...”
讲的很细致...
用户606080 2012-11-24 16:58
【TI博客大赛】TI C2000 Delfino TMS320F28335的28335_Ram_lnk.cmd文件
       写在最前,不喜请略过。本博文的主要内容已在QQ空间、人人网、网易博客、百度空间等平台发表过,最近进行了排错和修改,作者为Mr_D_prince(斌斌-龙臻),也就是本人,前两者均为我...
用户606080 2012-11-24 16:35
关于博文发表的若干问题
      今天我算是给ednchina的博文发表的功能做了测试了,真的窝了一肚子的火。 首先没法用高级编辑模式来写博客,每次点击都告诉我未授权,却没提醒怎样获得授权。 普通模式编辑,一点...
用户606080 2012-11-19 20:45
【TI博客大赛】TI C2000 Delfino TMS320F28335 GPIO引脚的输入限制
    写在最前,不喜请略过。本博文的主要内容已在QQ空间、人人网、网易博客、百度空间等平台发表过,最近进行了排错和稍稍修改,作者为Mr_D_prince(斌斌-龙臻),也就是本人,前两者均为我在...
我要评论
2
12
关闭 站长推荐上一条 /2 下一条