为什么Timer的计数器temp是多少就是多少us啊?这是怎么计算的啊

2019-07-21 06:20发布

现在在做捕获,不懂为什么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啊,这两者有关系吗?

求指教,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
fangxinla
1楼-- · 2019-07-21 10:59
回复【2楼】lieren007:
---------------------------------
arr是计数器的重装值,psc是时钟预分频数
是每记一次数是1/12us,而不是temp是1/12us,
比如你设arr=0-1=65535,psc=72-1=71,那么就是每记一次数为72/72=1us,temp=计数总次数*1us
lieren007
2楼-- · 2019-07-21 15:38
是不是可以理解成这样?
设置psc=6-1;
频率为72M/6=12M,那么每个temp就表示1/12us了,对不对?
求高手指教。
lieren007
3楼-- · 2019-07-21 18:08
回复【3楼】fangxinla:
---------------------------------
明白了,谢谢啊!
李少帅
4楼-- · 2019-07-21 21:37
搜噶  不错  不错
huzai
5楼-- · 2019-07-21 22:58
 精彩回答 2  元偷偷看……
王王王王
6楼-- · 2019-07-22 03:36
借楼问一下
temp=TIM2CH1_CAPTURE_STA&0X3F;
temp*=65536;//溢出时间总和
到这里不就是上升沿和下降沿之间的时间么?为什么还有加上TIM2CH1_CAPTURE_VAL?

一周热门 更多>