基于STM32F103C8T6最小系统板HAL库CubeMX驱动HC-SR501红外人体传感模块

系列文章目录

一、基于STM32F103C8T6最小系统板和STM32CubeMX实现LED灯循环闪烁
二、基于STM32F103C8T6和STM32CubeMX实现UART串口通信数据收发
三、实战小例程 基于STM32F103C8T6最小系统板和STM32CubeMX驱动WS2812B光立方
四、基于STM32F103C8T6最小系统板HAL库CubeMX驱动HC-SR501红外人体传感模块
五、基于STM32F103C8T6(HAL库)的HC-SR501红外人体传感及HC-SR04超声波测距



前言

相关模块的资料不再赘述,已经有很多人写过,这里给出其中一篇我觉得写的比较详细的文章链接:

模块资料介绍:
探究人体红外传感器HC-SR501

程序整体框架是基于我的上一篇串口收发的工程修改的,相关串口、GPIO配置也不再赘述,这里给出链接:

STM32学习笔记 二、基于STM32F103C8T6和STM32CubeMX实现UART串口通信数据收发


一、配置CubeMX

1、新建工程;
2、配置时钟源,在RCC里面的HSE配置的是晶振时钟;
3、配置程序烧录引脚SYS为SWD模式;
4、配置GPIO输出口,配置一个LED灯(我的板子是PC13),起到串口成功接收到数据时的指示作用;
5、配置GPIO输入口,用来读取模块的输出电平,我选的是PA1口;

6、配置串口收发引脚;
7、配置时钟树,我还是开到最高的72MHz;
8、进行项目设置,最后生成代码,CubeMX部分就大功告成了

在这里插入图片描述

二、硬件连线部分

CH340 ↔ STM32F103C8T6最小系统板:
 TX    ↔        RX
 RX    ↔        TX

DAP-LINK ↔ STM32F103C8T6最小系统板
  3.3V    ↔         VCC
  GND    ↔         GND
  SWIO   ↔         SWIO
 SWCLK  ↔        SWCLK

HC-SR501模块 ↔ STM32F103C8T6最小系统板
    OUT      ↔           PA1
    GND      ↔           GND

HC-SR501模块 ↔ DAP-LINK (这里注意模块供电范围为4.5V-20V,用3.3V无法驱动)
     VCC     ↔    5V

三、逻辑代码部分

代码很简单,在之前工程的基础上,仅用在while里进行修改

/* USER CODE BEGIN 4 */
 
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_1) == 1)
		{
			HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_RESET);//灭灯
			printf("有人\r\n");
			HAL_Delay(100);
		}

		else  
		{
			HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_SET);//亮灯
			printf("没人\r\n");
			HAL_Delay(1000);
		}
		
  }
	
  /* USER CODE END 3 */

现象:

感应到人体,板载LED绿灯亮,同时串口打印“有人”。

在这里插入图片描述

注意:
重定义printf后,必须在target里面勾选上MicroLIB,调用一下这个微型库,不然一直卡在里面。

在这里插入图片描述

版权声明:本文为CSDN博主「遗忘丶」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/h568630659/article/details/121764481

生成海报
点赞 0

遗忘丶

我还没有学会写个人说明!

暂无评论

相关推荐

基于STM32的高精度频率计设计

前言 本文记录了博主完成的一个课设作品(学分为3.5分),题目需要利用ARM做出一个高精度频率计。具体要求如下: 1)实现对10M以内数字信号频率的高精度测量&#xff0c