关于STM32F4的超声波模块程序的问题

2019-07-20 09:33发布

我是照着网上前辈们的程序改的,超声波模块用的HC-SR04,PE11用于发送20us脉冲,PE3开中断用于接收测距后反馈的高电平,并且这个中断也是可以进入的。
所以我认为问题出在定时器的计数上面,但是我经过反复比对,没有发现有哪里纰漏的地方。希望各路大神的指点。
挑了一些比较自己觉得比较关键的代码
这个是始终初始化的
[mw_shl_code=applescript,true]void TIM3_Int_Init(u16 arr,u16 psc)
{
        TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
       
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
       
  TIM_TimeBaseInitStructure.TIM_Period = arr;
        TIM_TimeBaseInitStructure.TIM_Prescaler=psc;
        TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;
        TIM_TimeBaseInitStructure.TIM_ClockDivision=0;
       
        TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);
       
        TIM_ClearFlag(TIM3, TIM_FLAG_Update);
        TIM_ITConfig(TIM3,TIM_IT_Update|TIM_IT_Trigger,ENABLE);
        //TIM_ITConfig(TIM3,TIM_IT_Trigger,ENABLE);
       
        NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x00;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03;
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
        NVIC_Init(&NVIC_InitStructure);
       
        TIM_Cmd(TIM3,DISABLE);
       
}[/mw_shl_code]
这个是中断的
[mw_shl_code=applescript,true]void EXTI3_IRQHandler(void)
{
        delay_ms(10);
       
  TIM_SetCounter(TIM3,0);
        TIM_Cmd(TIM3,ENABLE);
        while(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3))
        {
    ;
        }
        TIM_Cmd(TIM3,DISABLE);         
       
        Distance = TIM_GetCounter(TIM3)*340/200.0;
       
        EXTI_ClearITPendingBit(EXTI_Line3);
}[/mw_shl_code]


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。