TI中文支持网
TI专业的中文技术问题搜集分享网站

ConfigCpuTimer(&CpuTimer0,X,Y*1000000)的定时问题

ConfigCpuTimers(&CpuTimer0, X,Y*1000000)使用了CPUTimer0,主要是通过参数设置周期计数寄存器PRD和分频寄存器TPR,PRD.all =X*Y*1000000,定时时间T=(TPR+1)*Y s,我把X设定为150不变,由于32位的数据最大约为4200*1000000,于是Y不得大于28,我想通过此函数定时5分钟(300 s),把Y设定为20,则(TPR+1)=15,因此在ConfigCpuTimer(&CpuTimer0,X,Y*1000000)函数定义中,给TPR.all复制14.但是运行结果不是5分钟,有3分钟多些,求指教

Jones Chen:

如果是溢出的问题,可以设一个Flag,1分钟增加一次,增加5次就是5分钟。

ConfigCpuTimers(&CpuTimer0, X,Y*1000000)使用了CPUTimer0,主要是通过参数设置周期计数寄存器PRD和分频寄存器TPR,PRD.all =X*Y*1000000,定时时间T=(TPR+1)*Y s,我把X设定为150不变,由于32位的数据最大约为4200*1000000,于是Y不得大于28,我想通过此函数定时5分钟(300 s),把Y设定为20,则(TPR+1)=15,因此在ConfigCpuTimer(&CpuTimer0,X,Y*1000000)函数定义中,给TPR.all复制14.但是运行结果不是5分钟,有3分钟多些,求指教

xiuhui wang:

回复 Jones Chen:

按照计算是没有溢出的,原则上只要改变分频系数,可以定时很大的时间的,我定时1分钟的时候,TPR=5,Y=10,定时时间大约在86s

ConfigCpuTimers(&CpuTimer0, X,Y*1000000)使用了CPUTimer0,主要是通过参数设置周期计数寄存器PRD和分频寄存器TPR,PRD.all =X*Y*1000000,定时时间T=(TPR+1)*Y s,我把X设定为150不变,由于32位的数据最大约为4200*1000000,于是Y不得大于28,我想通过此函数定时5分钟(300 s),把Y设定为20,则(TPR+1)=15,因此在ConfigCpuTimer(&CpuTimer0,X,Y*1000000)函数定义中,给TPR.all复制14.但是运行结果不是5分钟,有3分钟多些,求指教

xiuhui wang:

回复 xiuhui wang:

我发现此程序的异常现象的规律了,不论我定时10分钟的或者30分钟,每过4小时45分钟20s,间隔很准确。 DSP就复位重启一次,很疑惑为什么出现这种情况?

ConfigCpuTimers(&CpuTimer0, X,Y*1000000)使用了CPUTimer0,主要是通过参数设置周期计数寄存器PRD和分频寄存器TPR,PRD.all =X*Y*1000000,定时时间T=(TPR+1)*Y s,我把X设定为150不变,由于32位的数据最大约为4200*1000000,于是Y不得大于28,我想通过此函数定时5分钟(300 s),把Y设定为20,则(TPR+1)=15,因此在ConfigCpuTimer(&CpuTimer0,X,Y*1000000)函数定义中,给TPR.all复制14.但是运行结果不是5分钟,有3分钟多些,求指教

Jones Chen:

回复 xiuhui wang:

这应该和Timer没有关系吧,楼主是否知道是什么原因导致DSP复位的呢?是看门狗还是什么?

ConfigCpuTimers(&CpuTimer0, X,Y*1000000)使用了CPUTimer0,主要是通过参数设置周期计数寄存器PRD和分频寄存器TPR,PRD.all =X*Y*1000000,定时时间T=(TPR+1)*Y s,我把X设定为150不变,由于32位的数据最大约为4200*1000000,于是Y不得大于28,我想通过此函数定时5分钟(300 s),把Y设定为20,则(TPR+1)=15,因此在ConfigCpuTimer(&CpuTimer0,X,Y*1000000)函数定义中,给TPR.all复制14.但是运行结果不是5分钟,有3分钟多些,求指教

xiuhui wang:

回复 Jones Chen:

不知道什么原因导致的复位,主要是每次复位时间间隔都是4小时45分钟20秒,肯定和时钟有关系,比如看门狗或者是定时器,但是看门狗定时为最大了,可能溢出的地方都做了踢狗处理。很疑惑。。。

ConfigCpuTimers(&CpuTimer0, X,Y*1000000)使用了CPUTimer0,主要是通过参数设置周期计数寄存器PRD和分频寄存器TPR,PRD.all =X*Y*1000000,定时时间T=(TPR+1)*Y s,我把X设定为150不变,由于32位的数据最大约为4200*1000000,于是Y不得大于28,我想通过此函数定时5分钟(300 s),把Y设定为20,则(TPR+1)=15,因此在ConfigCpuTimer(&CpuTimer0,X,Y*1000000)函数定义中,给TPR.all复制14.但是运行结果不是5分钟,有3分钟多些,求指教

xiuhui wang:

回复 Jones Chen:

不知道什么原因导致的复位,主要是每次复位时间间隔都是4小时45分钟20秒,肯定和时钟有关系,比如看门狗或者是定时器,但是看门狗定时为最大了,可能溢出的地方都做了踢狗处理。很疑惑。。。

赞(0)
未经允许不得转载:TI中文支持网 » ConfigCpuTimer(&CpuTimer0,X,Y*1000000)的定时问题
分享到: 更多 (0)