初级会员

- 积分
- 67
- 金钱
- 67
- 注册时间
- 2014-5-13
- 在线时间
- 0 小时
|
5金钱
现在在做捕获,不懂为什么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\r\n",temp);//打印总的高点平时间 temp是多少就输出是多少us????????????why?
TIM2CH1_CAPTURE_STA=0;//开启下一次捕获
}
为什么temp是多少就代表多少us呢?这是怎么计算的?
好像周期T=(1+arr)*(1+psc)/72M啊,这两者有关系吗?
求指教,谢谢!
|
最佳答案
查看完整内容[请看2#楼]
回复【2楼】lieren007:
---------------------------------
arr是计数器的重装值,psc是时钟预分频数
是每记一次数是1/12us,而不是temp是1/12us,
比如你设arr=0-1=65535,psc=72-1=71,那么就是每记一次数为72/72=1us,temp=计数总次数*1us
|