初级会员

- 积分
- 63
- 金钱
- 63
- 注册时间
- 2015-6-30
- 在线时间
- 14 小时
|
5金钱
HY-SRF05 超声波23cm以内测出来都是70左右是什么问题?刚用原子哥的输入捕获程序改了个超声波测距,出了这么个奇怪的问题,求大侠们指教……
定时器只是把一出道情况去掉(根据计算不可能溢出),主函数如下:
extern u8 TIM5CH1_CAPTURE_STA; //输入捕获状态
extern u16 TIM5CH1_CAPTURE_VAL; //输入捕获值
int main(void)
{
float mid;
u32 temp=0;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
LED_Init(); //LED端口初始化
GPIO_ResetBits(GPIOC,GPIO_Pin_2);
TIM5_Cap_Init(0XFFFF,72-1); //以1Mhz的频率计数
while(1)
{
delay_ms(30);
GPIO_SetBits(GPIOC,GPIO_Pin_2);
delay_us(20);
GPIO_ResetBits(GPIOC,GPIO_Pin_2);
if(TIM5CH1_CAPTURE_STA&0X80)//成功捕获到了一次上升沿
{
temp=TIM5CH1_CAPTURE_VAL;//得到总的高电平时间
printf("HIGH:%d us\r\n",temp);//打印总的高点平时间
mid=(float)temp;
mid/=58;
printf("HIGH:%.3f cm\r\n",mid);//打印总的高点平时间
TIM5CH1_CAPTURE_STA=0;//开启下一次捕获
}
delay_ms(30);
}
}
求解???
|
|