
一、适用场景
适用场景:人体/运动检测(入侵报警、走廊/楼道自动照明、智能家居存在检测、节能灯控、触发录像/抓拍、嵌入式低功耗唤醒实验)。
二、器材清单
HC-SR501 PIR 模块 ×1
stm32f103(或其它 STM32)开发板 ×1
若干杜邦线(公对母)×1组
5V 稳压电源(若模块标注 5V)×1(注意部分模块可 3.3V 工作)
三、工作原理(要点)
PIR(被动红外)探测:传感器通过焦平面上的热释电探测元件感知环境红外辐射的瞬时变化(如人体移动引起的红外对比变化),模块内部放大并经过比较器/整形输出高电平脉冲表示检测到"运动/人体通过"。
输出逻辑:模块在检测到活动时 DATA 输出高电平(且保持 TIME 设定的大约 5s--300s 之间);若选择非重复触发或短触发模式,输出可能只在第一次检测到活动时产生脉冲。输出为 TTL 级别(高电平约接近 VCC),不同模块在 5V/3.3V 下表现不同,接入 MCU 前请确认电压兼容性或使用分压/电平转换。
四、接线示意
VCC → +5V
GND → GND
标准库
PA1 →out
HAL库
PA1 →out
五、示例代码
标准库
cpp
#include "stm32f10x.h"
#include "stdio.h"
#include "bsp_SysTick.h"
#include "bsp_usart.h"
void gpio_init()
{
GPIO_InitTypeDef PA;
//使能时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
PA.GPIO_Pin = GPIO_Pin_1;
// PA.GPIO_Mode = GPIO_Mode_IN_FLOATING;
PA.GPIO_Mode = GPIO_Mode_IPD;
GPIO_Init(GPIOA,&PA);
}
int main()
{
USART_Config();
SysTick_Init();
gpio_init();
while(1)
{
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1) == SET)
{
Usart_SendString(USART1,"come on\n");
}else
{
Usart_SendString(USART1,"leave\n");
}
Delay_us(1000000);
}
// return 0;
}
HAL库

cpp
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART1_UART_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) == 1)
HAL_UART_Transmit(&huart1,"有人路过\r\n", strlen("有人路过\r\n"), HAL_MAX_DELAY);
else
HAL_UART_Transmit(&huart1,"无人路过\r\n", strlen("无人路过\r\n"), HAL_MAX_DELAY);
HAL_Delay(1000);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
六、讲解视频
摘要:本文介绍了如何在 STM32 上使用 EC11 增量式旋转编码器(带按键):适用场景、器材清单、正交编码工作原理、接线方式,以及推荐的 TIM 硬件编码器模式与通用的 EXTI+状态机软件解码实现。提供了按键去抖与短/长按判定示例,并列出实战注意点(去抖、计数器回绕、分辨率选择与安装细节),适合用于嵌入式 UI 与参数控制场景。