今天终于找到问题了,有些高兴啊!
使用2812进行AD转换,前几天还没有什么问题,但是自从上次把SystemClock升为75Mhz(原来是30Mhz)后,算出来的频率就不对了。和Original Freq存在着固定的2/5的关系。查了好几天,一直找不到原因,今天比较了原来的程序,才发现75和30的差别了。
我是使用CpuTimer2去启动AD转换的。设置CpuTimer使用的是CpuTimerConfig这个函数,它包含了一个Freq的形参。之前我一直以为这个形参就指的是Oscclock,现在想了一下,它应该指的是SystemClock。
算一算也对。CpuTimerConfig这个函数里面有这样几句话:
Timer->CPUFreqInMHz = Freq;
Timer->PeriodInUSec = Period;
temp = (long) (Freq * Period);
Timer->RegsAddr->PRD.all = temp;
1s中需要Freq个脉冲,那么要产生Period的中断,就应该需要Freq * Period个脉冲。本来Freq应该设为75,结果成了30,这样就导致CpuTimer的定时中断本来假设需要75s中断一次,现在竟然成了30s中断一次。这样就成了2/5的关系了。
用户187311 2009-5-26 00:07
用户163931 2009-5-6 11:01
用户227725 2009-4-30 17:19
用户1405232 2008-12-27 09:36
用户78419 2008-11-28 17:30