初级会员

- 积分
- 67
- 金钱
- 67
- 注册时间
- 2018-8-14
- 在线时间
- 8 小时
|

楼主 |
发表于 2018-8-23 14:07:14
|
显示全部楼层
if (TIM_GetITStatus(TIM5, TIM_IT_CC4) != RESET) //发生捕获事件
{
if((TIM5CH1_CAPTURE_STA&0X20)&&(!(TIM5CH1_CAPTURE_STA&0X40))) //已经捕获到上升沿
{
TIM5CH1_CAPTURE_STA|=0X40; //标记成功捕获一次下降沿
TIM5CH1_CAPTURE_VAL1=TIM_GetCapture4(TIM5)+(TIM5CH1_CAPTURE_STA&0X1f)*65536; //获得TIM5捕获通道一的捕获值(对应高电平时间)
TIM_SetCounter(TIM5,0); //清零计数器
TIM_OC4PolarityConfig(TIM5,TIM_ICPolarity_Rising); //设置为上升沿捕获
TIM5CH1_CAPTURE_STA&=0Xe0; //溢出次数清零
}
else if((TIM5CH1_CAPTURE_STA&0X20)==0) //未捕获到上升沿
{
TIM5CH1_CAPTURE_STA=0; //清零标志位及溢出次数
TIM5CH1_CAPTURE_VAL1=0; //清零高电平计数
TIM5CH1_CAPTURE_VAL2=0; //清零低电平计数
TIM_SetCounter(TIM5,0); //清零TIM5计数寄存器
TIM5CH1_CAPTURE_STA|=0X20; //置标志位
TIM_OC4PolarityConfig(TIM5,TIM_ICPolarity_Falling); //设置为下降沿捕获
}
else if((TIM5CH1_CAPTURE_STA&0X40)&&(!(TIM5CH1_CAPTURE_STA&0X80))) //已经捕获到下降沿
{
TIM5CH1_CAPTURE_VAL2=TIM_GetCapture4(TIM5)+(TIM5CH1_CAPTURE_STA&0X1f)*65536;//低电平计数(对应低电平时间)
TIM5CH1_CAPTURE_STA|=0X80; //置标志位
}
}
看这个它设置的,然后想求周期 不然总觉的他不够用,想听听大佬对这段代码的理解 |
|