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秒,肯定和时钟有关系,比如看门狗或者是定时器,但是看门狗定时为最大了,可能溢出的地方都做了踢狗处理。很疑惑。。。