跪求STM32超声波避障程序,或者告诉我怎么写都可以,感谢

2019-07-14 20:45发布

新手菜鸟,毫无头绪,求大神指导
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
知心瓶盖
2019-07-15 17:02
float Senor_Using(void)
{
                float length=0,sum=0;
                u16 tim;
                unsigned int i=0;
               
                /*测5次数据计算一次平均值*/
                while(i!=5)
                {
                                HAL_GPIO_WritePin(GPIOE, GPIO_PIN_4, GPIO_PIN_SET); //拉高信号,作为触发信号
                                osDelay (10); //高电平信号超过10us
                                HAL_GPIO_WritePin(GPIOE, GPIO_PIN_4, GPIO_PIN_RESET);

                                /*等待回响信号*/
                                while(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_5)==RESET);
                                __HAL_TIM_ENABLE(&TIM2_Handler);//回响信号到来,开启定时器计数
                                i+=1; //每收到一次回响信号+1,收到5次就计算均值

                                while(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_5)==SET);//回响信号消失
                                __HAL_TIM_DISABLE(&TIM2_Handler);//关闭定时器

                                //tim=TIM_GetCounter(TIM2);//获取计TIM2数寄存器中的计数值,一边计算回响信号时间
                                tim=__HAL_TIM_GET_COUNTER(&TIM2_Handler); //tim = TIM2->CNT;
                          length=(tim+overcount*1000)/58.0;//通过回响信号计算距离

                                sum=length+sum;
                                TIM2->CNT=0; //将TIM2计数寄存器的计数值清零
                                overcount=0; //中断溢出次数清零
                                osDelay (10);
                }
                                length=sum/5;
                                return length;//距离作为函数返回值
        }

一周热门 更多>