初级会员

- 积分
- 51
- 金钱
- 51
- 注册时间
- 2014-11-13
- 在线时间
- 0 小时
|
5金钱
原子哥,是这样的
我的思路是测周期,捕获一次上升沿,在捕获下一次上升沿,时间差,就是频率的周期了
void TIM5_IRQHandler(void)
{
u16 tsr;
tsr=TIM5->SR;
if((TIM5CH1_CAPTURE_STA&0X80)==0)//还为成功捕获
{
if(tsr&0X01)//????
{
if(TIM5CH1_CAPTURE_STA&0X40)//已捕获到高电平
{
if((TIM5CH1_CAPTURE_STA&0X3F)==0X3F)//高电平埋汰长了
{
TIM5CH1_CAPTURE_STA|=0X80;//标记成功捕获一次
TIM5CH1_CAPTURE_VAL=0XFFFF;
}else TIM5CH1_CAPTURE_STA++;
}
}
if(tsr&0x02)//捕获1发生时间
{
if(TIM5CH1_CAPTURE_STA&0X40) //捕获到下一个上升沿
{
TIM5CH1_CAPTURE_STA|=0X80; //标记成功捕获到一次周期
TIM5CH1_CAPTURE_VAL=TIM5->CCR1; //当前捕获值
}else //第一次捕获
{
TIM5CH1_CAPTURE_STA=0; //清空
TIM5CH1_CAPTURE_VAL=0;
TIM5CH1_CAPTURE_STA|=0X40; //第一捕获到上升沿
TIM5->CNT=0; //计数器清空
}
}
}
TIM5->SR=0;//清楚中断标志位
}
我就是在在原捕获的实验的基础上只修该TM5中断,
但是 ,我测TM3产生的80KHZ的平率 。、测得结果却是90HZ
这是怎么回事啊,,原子哥
|
|