- HAL库
- STM32F103C8T6主控芯片
- HC-SR04超声波测距模块
参考文章,十分感谢原作者
手把手教你,通过HAL库实现STM32的超声波测距–以SR-04为例
工程源码
基本配置
- 配置sys

- 配置RCC

- 配置USART 用来串口输出,注意波特率

- 配置时钟,将超声波测距模块的ECHO引脚设置为PB11,通道4,计数值和模式如下

- 配置时钟

代码编写
- time.c 在
/* USER CODE BEGIN 1 */处编写,防止重新配置芯片的时候覆盖写好的代码
/* USER CODE BEGIN 1 */
//溢出回调函数和捕获回调函�?
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if((TIM2CH2_CAPTURE_STA & 0x80)==0) // 还未捕获成功
{
if(TIM2CH2_CAPTURE_STA & 0x40) // 捕获到一个下降沿
{
if((TIM2CH2_CAPTURE_STA & 0x3F) == 0x3F) // 高电平的时间太长�?
{
TIM2CH2_CAPTURE_STA |= 0X80; // 标记为成功捕获一�?
TIM2CH2_CAPTURE_VAL = 0XFFFF

本文详细介绍了如何使用HAL库在STM32F103C8T6上实现HC-SR04超声波测距模块的配置和测量。主要涉及了RCC和USART的配置,以及TIM的中断回调函数实现测距。在代码中,通过TRIG引脚发送触发脉冲,并通过ECHO引脚捕获回波时间,计算并输出距离。遇到的问题包括测量值始终为0、串口打印问题等,解决办法包括检查代码和硬件连接。
最低0.47元/天 解锁文章
1656





