基于stm32F407的超声波测距程序及注意事项(HC-SR04) .pdfVIP

基于stm32F407的超声波测距程序及注意事项(HC-SR04) .pdf

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

基于stm32F407的超声波测距程序及注意事项(HC-SR04)

⽹上的资料太杂太乱,调这个东西的时候⾛了不少弯路,现在分享出来,亲测管⽤!

基本⼯作原理:

(1)采⽤IO⼝TRIG触发测距,给⾄少10us的⾼电平信号;

(2)模块⾃动发送8个40khz的⽅波,⾃动检测是否有信号返回;

(3)有信号返回,通过IO⼝ECHO输出⼀个⾼电平,⾼电平持续的时间就是超声波从发射到返回的时间。测试距离=(⾼电平时间声速

(340M/S))/2;

(4)本模块使⽤⽅法简单,⼀个控制⼝发⼀个10US以上的⾼电平,就可以在接收⼝等待⾼电平输出.⼀有输出就可以开定时器计时,当此⼝变

为低电平时就可以读定时器的值,此时就为此次测距的时间,⽅可算出距离.如此不断的周期测,即可以达到你移动测量的值*

5、操作:初始化时将trig和echo端⼝都置低,⾸先向给trig发送⾄少10us的⾼电平脉冲(模块⾃动向外发送8个40K的⽅波),然后等

待,捕捉echo端输出上升沿,捕捉到上升沿的同时,打开定时器开始计时,再次等待捕捉echo的下降沿,当捕捉到下降沿,读出计时器

的时间,这就是超声波在空⽓中运⾏的时间,按照测试距离=(⾼电平时间

声速(340M/S))/2就可以算出超声波到障碍物的距离。

程序:

超声波端⼝初始化:

GPIO_InitTypeDefGPIO_InitStructure;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG,ENABLE);//使能GPIO时钟

//trig

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;//普通输出模式

GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽输出

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;//100MHz

GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;//上拉

GPIO_Init(GPIOG,GPIO_InitStructure);//

//echo

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN;//输⼊

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;//100MHz

GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;//上拉

GPIO_Init(GPIOG,GPIO_InitStructure);//¯

定时器初始化:

TIM4_Int_Init(250-1,8400-1);//定时器时钟84M,分频系数8400,所以84M/8400=10KHZ的技术频率,记⼀次数0.1ms,计数

250次为25ms。

/超声波测距最⼤4⽶,按声速340M/s计算,超声波测量最⼤距离4m时所⽤时间为42/340=23.6ms,这⾥取中断时间为25ms,完全够

⽤!*/

定时器中断程序:

voidTIM4_IRQHandler(void)

{

if(TIM_GetITStatus(TIM4,TIM_IT_Update)==SET)//溢出中断

{

flag=1;//·发⽣中断代表测量范围超出,使flag为1.

}

TIM_ClearITPendingBit(TIM4,TIM_IT_Update);//清除中断标志位

}

测距程序:

doubles=0;

doublel;

doublep[5];

inti;

for(i=1;i=5;i++)

{

//发出⽅波

trig=1;

delay_us(20);

trig=0;

//等待echo接收⾼电平

while(echo==0);

//开启定时器计时

TIM_Cmd(TIM4,ENABLE);//

TIM4-CNT=0;

while(echo==1);//等待接收完成

TIM_Cmd(TIM4,DISABLE);//完全接收后关闭定时器

//检验

文档评论(0)

150****2152 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档