d、可重复触发方式:即感应输出高电平后,在延时时间段内,如果有人体在其感应范围活动,其输出将一直保持高电平,直到人离开后延时,才变为低电平(即:感应模块检测到人体的每一次活动后会自动顺延一个延时时间段,并且以最后一次活动的时间为延时时间的起始点)。
模块的VOUT脚输出的是开关量,有人接近感应模块时,输出高电平,人离开后恢复成低电平。所以,可接单片机的任何一个IO脚都行,可采用查询法,查询所接引脚的状态,就知道VOUT脚是高电,还是低电平,从而判是否有人接近了。
程序
main函数
#include "stm32f10x.h" // Ï൱ÓÚ51µ¥Æ¬»úÖÐµÄ #include <reg51.h>
#include "usart.h"
#include "bsp\_hc\_sr501.h"
#include "bsp\_led.h"
#include "bsp\_systick.h"
//¶¨ÒåÒ»¸öÈ«¾Ö±äÁ¿a£¬½«#include "stm32f10x\_it.h"ÖеIJÎÊý´«Èë
extern int a;
int main(void)
{
// À´µ½ÕâÀïµÄʱºò£¬ÏµÍ³µÄʱÖÓÒѾ±»ÅäÖóÉ72M¡£
USART\_Config();
LED\_GPIO\_Config();
EXTI\_SR501\_Config();
printf("»¶ÓʹÓÃÈËÌå¸ÐӦģ¿é\n");
while(1)
{
printf("³É¹¦\n");
SysTick\_Delay\_ms(1000);
}
}
.c
#include "bsp\_hc\_sr501.h"
#include "usart.h"
static void NVIC\_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
/\* ÅäÖÃNVICΪÓÅÏȼ¶×é1 \*/
NVIC\_PriorityGroupConfig(NVIC_PriorityGroup_1);
/\* ÅäÖÃÖжÏÔ´£º°´¼ü1 \*/
NVIC_InitStructure.NVIC_IRQChannel = SR501_OUT_EXTI_IRQ;
/\* ÅäÖÃÇÀÕ¼ÓÅÏȼ¶ \*/
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
/\* ÅäÖÃ×ÓÓÅÏȼ¶ \*/
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
/\* ʹÄÜÖжÏͨµÀ \*/
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC\_Init(&NVIC_InitStructure);
}
void EXTI\_SR501\_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
/\*¿ªÆô°´¼üGPIO¿ÚµÄʱÖÓ\*/
RCC\_APB2PeriphClockCmd(SR501_OUT_GPIO_CLK,ENABLE);
/\* ÅäÖà NVIC ÖжÏ\*/
NVIC\_Configuration();
/\*--------------------------GPIOÅäÖÃ-----------------------------\*/
/\* Ñ¡Ôñ°´¼üÓõ½µÄGPIO \*/
GPIO_InitStructure.GPIO_Pin = SR501_OUT_GPIO_PIN;
/\* ÅäÖÃΪ¸¡¿ÕÊäÈë \*/
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD ;
GPIO\_Init(SR501_OUT_GPIO_PORT, &GPIO_InitStructure);
/\* Ñ¡ÔñEXTIµÄÐźÅÔ´ \*/
GPIO\_EXTILineConfig(SR501_OUT_EXTI_PORTSOURCE, SR501_OUT_EXTI_PINSOURCE);
EXTI_InitStructure.EXTI_Line = SR501_OUT_EXTI_LINE;
/\* EXTIΪÖжÏģʽ \*/
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
/\* ÉÏÉýÑØÖÐ¶Ï \*/
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
/\* ʹÄÜÖÐ¶Ï \*/
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI\_Init(&EXTI_InitStructure);
}
.h文件
#ifndef \_\_BSPHC\_SR501\_H
#define \_\_BSPHC\_SR501\_H
#include "stm32f10x.h"
//Òý½Å¶¨Òå
#define SR501\_OUT\_GPIO\_PORT GPIOA
#define SR501\_OUT\_GPIO\_CLK (RCC\_APB2Periph\_GPIOA|RCC\_APB2Periph\_AFIO)
#define SR501\_OUT\_GPIO\_PIN GPIO\_Pin\_4
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
**深知大多数嵌入式工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
**因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/5ddc6e0cc6dd9bdee4cd469f6e021550.png)
![img](https://img-blog.csdnimg.cn/img_convert/4520c4b4acac2ba863ed2d45b5233d10.jpeg)
![img](https://img-blog.csdnimg.cn/img_convert/73eed74a79dc746cbb249562d056304f.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**
![img](https://img-blog.csdnimg.cn/img_convert/728ed5550239b1787dfa6a98824c8a17.png)
![img](https://img-blog.csdnimg.cn/img_convert/71157590222d12f72876c28535595a7f.png)
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以+V:Vip1104z获取!!! (备注:嵌入式)**
<img src="https://img-community.csdnimg.cn/images/73bb5de17851459088c6af944156ee24.jpg" alt="img" style="zoom: 67%;" />
# 最后
**资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~**
**你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!**
es/73bb5de17851459088c6af944156ee24.jpg" alt="img" style="zoom: 67%;" />
# 最后
**资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~**
**你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!**
**[更多资料点击此处获qu!!](https://bbs.csdn.net/topics/618376385)**