APM32F103VBT6开发板—驱动超声波HC-SR04测距
[复制链接]
前言
32单片机在之前的学习中并未接触过,APM32单片机是我接触的第一款cotex内核的单片机,同时为了锻炼快速上手一款单片机的能力,申请APM32f103Mini开发板挂载超声波HC-SR04模块进行程序编写调试。
0开发环境搭建开发环境采用Arm-MDK 5.33版本,烧录工具为ST-Link,利用外接的usb-ttl CH340G模块将超声波测距数据利用串口上传到电脑便于调试分析。超声波模块固有排针引出的四个接口,依次为VCC Trig(触发端) Echo(接收端) GND,与开发板的接线为Vcc接5v供电,GND接GND,Trig接PA4,Echo接PA5。至此硬件电路配置完成接下来结合几张图讲述工程模板搭建过程。
首先在官网下载APM32F103单片机的固件库(SDK文件)以及keil的pack支持包
图1
安装pack支持包。
不需要新建keil工程整体创建工程模板。创建模板采用官方文件配置。只需调整文件夹改变后的路径。重新链接到正确路径编译成功一个工程即可。这里创建工程模板以官方的GPIO例程为例
图2
将example下的GPIO例程复制到新的工程文件夹内。这里配置如下。复制后改名为相应的工程名称。我这里是USART_Print。同时将需要的其他文件的文件夹Board以及Libraries同时转移。此时文件移动部分结束
图3
接下来打开已经转移好的keil工程文件
图4
可以看到project文件配置全部有误。文件路径导入不正确。
图5
将上述头文件路径依次重新设置为工程文件夹下的文件路径
图6
在上述图标下将project中展示的有问题的文件重新删除添加,完成后文件叹号标识消失。工程可正常编译如下所示
图7
1测距原理及单片机资源分析
图8
HC-SR04模块超声波测距原理主要依据上图。具体驱动流程为。Trig触发端发出10us以上的触发信号。同时模块内部随即循环发出8个40kHz的脉冲。接着在Echo接收端产生回响高电平。回响高电平时长与输出检测到的距离成正比。
根据超声波原理分析可知单片机使用的资源大致如下。两个定时器。一个用于设定循环测距间隔。另一个用于单次测距内回波反馈过长进行调整。两个GPIO口。一个用于触发信号发射。另一个用于回响电平接收。一个串口。将测距数据不断上传到电脑上。
2实物调试检验
程序编写通过。超声波测距驱动完成后。接着通过示波器+ST-Link硬件仿真对波形高电平时长进行观察。将两者得到的结果对比验证超声波工作
此图为示波器在触发电平2.5V下。得到的PA4发射端电平图像,由图像可知高电平持续时间为10.44us
图9
在keil中硬件仿真计算得到的实际波形延时时间
图10
两者基本接近。触发端触发电平无误
再附上当测距稳定在33cm时,触发电平2.5V触发得到的回响电平图像。回响电平持续时间为1.948ms
图11
3问题分析
实际调试中遇到的最大阻碍是GPIO端口读取位数据或置位数据。最开始编写代码时没有采用gpio.c中的函数。而是利用apm32f10.h中的端口寄存器调用宏定义
图12
用上述宏定义调用导致测距功能一直无法调试成功。最后还是采用库函数的GPIO调用后程序调通
工程文件在文章附件中。大家可以下载学习交流
结尾附上开发板的实物接线图。以及超声波稳定测距时串口反馈的数据
USART+超声波例程.zip
(1.71 MB, 下载次数: 4)
|