初级会员

- 积分
- 195
- 金钱
- 195
- 注册时间
- 2019-4-8
- 在线时间
- 34 小时
|
u8 TIM5CH1_CAPTURE_STA=0; //输入捕获状态
u16 TIM5CH1_CAPTURE_VAL; //输入捕获值
//定时器5中断服务程序
void TIM5_IRQHandler(void)
{
if(TIM_GetITStatus(TIM5, TIM_IT_CC1) != RESET)
{
if(TIM5CH1_CAPTURE_STA==1)
{
TIM5CH1_CAPTURE_VAL=TIM_GetCapture1(TIM5);
printf("探测距离为:%.2f cm\r\n",TIM5CH1_CAPTURE_VAL*17/1000.0);
TIM5CH1_CAPTURE_STA=0;
TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Rising); //CC1P=0 设置为上升沿捕获
}
else
{
TIM5CH1_CAPTURE_VAL = 0;
TIM5CH1_CAPTURE_STA =1;
TIM_SetCounter(TIM5,0);
TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Falling); //CC1P=1 设置为下降沿捕获
TIM_Cmd(TIM5,ENABLE);
}
}
TIM_ClearITPendingBit(TIM5, TIM_IT_CC1|TIM_IT_Update); //清除中断标志位
}
还有一点问题就是最大测17cm,后面就显示不出,希望大神们指导下,我是个小白 |
|
|