初级会员

- 积分
- 186
- 金钱
- 186
- 注册时间
- 2016-2-27
- 在线时间
- 39 小时
|

楼主 |
发表于 2016-4-29 08:46:51
|
显示全部楼层
你看看下面的两个程序,只是一个语句不同,将正常程序的TIM_GetCounter(TIM5)换成
TIM_GetCapture1(TIM5)就不正常了,结果就千差万别,这是什么原因???
void TIM5_IRQHandler(void) //超声波数据正常程序
{
TIM_SetCounter(TIM5,0);
if(TIM_GetITStatus(TIM5,TIM_IT_CC1)!=RESET) //捕获1发生捕获事件
{
while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1);
TIM_Capture_VAL=TIM_GetCounter(TIM5);
TIM_Cmd(TIM5,DISABLE);
TIM_Capture_VAL=(TIM_Capture_VAL/1000000*340/2*100);
printf("测距:%Lf cm\r\n",TIM_Capture_VAL);
delay_ms(500);
}
TIM_ClearITPendingBit(TIM5,TIM_IT_CC1);
TIM_Cmd(TIM5,ENABLE);
}
另一个不正常的如下
void TIM5_IRQHandler(void)
{
TIM_SetCounter(TIM5,0);
if(TIM_GetITStatus(TIM5,TIM_IT_CC1)!=RESET) //捕获1发生捕获事件
{
while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1);
TIM_Capture_VAL=TIM_GetCapture1(TIM5);//*****//将上面程序的
TIM_GetCounter(TIM5)换成
TIM_GetCapture1(TIM5)就不正 常了
TIM_Cmd(TIM5,DISABLE);
TIM_Capture_VAL=(TIM_Capture_VAL/1000000*340/2*100);
printf("测距:%Lf cm\r\n",TIM_Capture_VAL);
delay_ms(500);
}
TIM_ClearITPendingBit(TIM5,TIM_IT_CC1);
TIM_Cmd(TIM5,ENABLE);
}
|
|