stm32超声波测距程序

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

stm32超声波测距程序单片机用的是STM32F103VC系列,超声波是淘宝买的一个模块,只有5个引脚,用起来很方便。用的时候只需要其中4个脚,VCC,GND,TRIG,ECHO。TRIG接PA8,OUT_PP模式;ECHO接PA9,IN_FLOATING模式。#includestm32f10x_heads.h#includeHelloRobot.h#includedisplay.hvoidTim2_Init(void);voidTIM2_IRQHandler(void){if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_12)==0)GPIO_SetBits(GPIOE,GPIO_Pin_12);elseGPIO_ResetBits(GPIOE,GPIO_Pin_12);TIM_ClearFlag(TIM2,TIM_FLAG_Update);}intmain(void){u16count;floatlength;BSP_Init();Tim2_Init();//定时器初始化函数LCM_Init();delay_nms(5);GPIO_ResetBits(GPIOA,GPIO_Pin_8);Display_List_Char(1,0,distance:);//PA8:TrigPA0:Echowhile(1){GPIO_SetBits(GPIOA,GPIO_Pin_8);delay_nus(20);//拉高超过10us,发射超声波GPIO_ResetBits(GPIOA,GPIO_Pin_8);TIM2-CNT=0;//计数器清0while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_9)==0);//等待ECHO脚高电平TIM_Cmd(TIM2,ENABLE);//TIM2enablecounter[允许tim2计数]while((GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_9)==1)&&(TIM2-CNTTIM2-ARR-10));TIM_Cmd(TIM2,DISABLE);count=TIM2-CNT;//ECHO脚低电平后读取计数器的值,从而算出往返时间length=count/58.0;Display_List_Char(1,9,);Display_List_Float(1,9,length);delay_nms(200);}}voidTim2_Init(void){TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;TIM_DeInit(TIM2);//复位TIM2定时器TIM_TimeBaseStructure.TIM_Period=49999;TIM_TimeBaseStructure.TIM_Prescaler=71;TIM_TimeBaseStructure.TIM_ClockDivision=0x0;TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);TIM_ClearFlag(TIM2,TIM_FLAG_Update);TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);}

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功