新手上路
- 积分
- 22
- 金钱
- 22
- 注册时间
- 2018-1-31
- 在线时间
- 3 小时
|
5金钱
我是照着网上前辈们的程序改的,超声波模块用的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]
|
|