F2808-60的主频配置定时器0输出为何一直是2倍时间关系,请指点

2019-07-23 13:28发布

1、主频设置

InitPll(DSP28_PLLCR,DSP28_CLKINDIV);

#define DSP28_CLKINDIV   1

#define DSP28_PLLCR    6

其他没有修改



2、定时器0设置

ConfigCpuTimer(&CpuTimer0, 60, 1);   //CpuTimer0配置分频60M,定时周期1uS

Timer->CPUFreqInMHz = Freq;  

Timer->PeriodInUSec = Period;  

temp = (long) (Freq * Period);  

Timer->RegsAddr->PRD.all = temp;   

  Timer->RegsAddr->TPR.all  = 0;    // Set pre-scale counter to divide by 1 (SYSCLKOUT):

Timer->RegsAddr->TPRH.all  = 0;



3、定时器中断 ,定时1秒

interrupt void cpu_timer0_isr(void) {

CpuTimer0.InterruptCount++;

if(CpuTimer0.InterruptCount >= 1000000)   

{   

    CpuTimer0.InterruptCount = 0;   

    GpioDataRegs.GPATOGGLE.bit.GPIO22 = 1; //测试下来,正常翻转

   }

  PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;

}


外部有源晶振:10M
我用示波器测GPIO22,周期一直是4秒,反复配置,都是这样,请问是什么地方有问题
(GPIO22的高电平和低电平各2秒,周期是4秒)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
vivilzb1985
1楼-- · 2019-07-23 18:50
这个就看手中设置中的分频倍频参数的。
aaroncy79
2楼-- · 2019-07-23 22:06
我反复配置,资料都看了好几遍,主频60M,定时器0为1分频,定时器0的定时频率60M,定时1us
但就是时间不对,希望各位大师帮我看看
shenmu2012
3楼-- · 2019-07-24 00:45
 精彩回答 2  元偷偷看……
aaroncy79
4楼-- · 2019-07-24 06:10
C:Userschenyi.chenyi-PCDesktop11.png
JY-DX-JY
5楼-- · 2019-07-24 07:22
貌似没错。
aaroncy79
6楼-- · 2019-07-24 09:13
SysCtrlRegs.PLLSTS.bit.CLKINDIV != clkindiv;
这里面!=是什么意思,从来没见过这么写的

一周热门 更多>