现在在做捕获,不懂为什么temp每计数加一就是加1us。
TIM2_Cap_Init(0XFFFF,72-1); //以1Mhz的频率计数 arr=0xffff=65535,psc=72-1
if(TIM2CH1_CAPTURE_STA&0X80)//成功捕获到了一次上升沿
{
temp=TIM2CH1_CAPTURE_STA&0X3F;
temp*=65536;//溢出时间总和
temp+=TIM2CH1_CAPTURE_VAL;//得到总的高电平时间
printf("HIGH1:%d us
",temp);//打印总的高点平时间 temp是多少就输出是多少us????????????why?
TIM2CH1_CAPTURE_STA=0;//开启下一次捕获
}
为什么temp是多少就代表多少us呢?这是怎么计算的?
好像周期T=(1+arr)*(1+psc)/72M啊,这两者有关系吗?
求指教,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
arr是计数器的重装值,psc是时钟预分频数
是每记一次数是1/12us,而不是temp是1/12us,
比如你设arr=0-1=65535,psc=72-1=71,那么就是每记一次数为72/72=1us,temp=计数总次数*1us
设置psc=6-1;
频率为72M/6=12M,那么每个temp就表示1/12us了,对不对?
求高手指教。
---------------------------------
明白了,谢谢啊!
temp=TIM2CH1_CAPTURE_STA&0X3F;
temp*=65536;//溢出时间总和
到这里不就是上升沿和下降沿之间的时间么?为什么还有加上TIM2CH1_CAPTURE_VAL?
一周热门 更多>