keil 配置超声波模块注意事项

          昨天写代码,用stm32f103zet6 同时驱动三个超声波模块得到不同方位的距离。晚上测试的时候,能够工作,但是显示的距离误差大,而且距离近,大概50cm。今天开始,调试,搞了一上午,调试的过程发现程序一直在滴答定时器和定时器中断中进行。单步执行的的时候可以跳到while里面执行响应函数。全速执行的话,就一直在两个中断中跳了,怎么也不到while(1)中的响应函数来。更恶心的事情在后面,刚开始还能通过串口发送数据,后面连数据都不发送了。。。真是惊呆了!

       经过一上午的调试,终于发现了一个bug。。原来是管脚配置出错了。作为探头回波接收信号的管脚要配置成GPIO_Mode_IPD!!切记啊,而不是GPIO_Mode_IN_FLOATING

,因为在默认情况下,MODE_IN_FLOATING 模式gpio_idr寄存器会读取到的是高电平,而mode_in_ipd是低电平。代码中,获取回波高电平的时间我没有采用定时计数器得到,而是通过

       while(togglethree)
  {
   togglethree= GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_0);
  Delay_us(10);
   Time_Flagthree++;
  }

得到,这样,因为上电默认得到的是高电平,所以上电主程序就跑到死循环里面去了。。这样还怎么样工作。。修改之后,一切正常,有效距离140cm,误差在一到2cm。也算是给自己一个交代了。。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值