本帖最后由 至圣者 于 2022-10-27 13:28 编辑
#申请开发板# #有奖活动# #技术资源# #申请原创# 前言 32单片机在之前的学习中并未接触过,APM32单片机是我接触的第一款cotex内核的单片机,同时为了锻炼快速上手一款单片机的能力,申请APM32f103Mini开发板挂载超声波HC-SR04模块进行程序编写调试。 0开发环境搭建开发环境采用Arm-MDK5.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调用后程序调通 工程文件在文章附件中。大家可以下载学习交流 结尾附上开发板的实物接线图。以及超声波稳定测距时串口反馈的数据 |