HC_SR501配置函数
先是头文件,
#define HC_SR501 PAI(0) PAI(0)是位绑定,方便操作用的,
void HC_SR(void);是HC_SR501的PA0配置函数
u8 HC_SR501_Statue(void);是为了判断PA0输入状态,如果被拉高了,说明有人进入了
void HC_SR(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA ,ENABLE);//打开GPIOA时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;//选中0引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;//配置为下拉输入模式
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
u8 HC_SR501_Statue(void)
{
if(PAI(0)==1)//如果GPIOA_0 引脚输入高电平,代表有人,返回1
{
return 1;
}
return 0;//没人就返回0
}
部分主函数
int main(void)
{
delay_init(72); //滴答计时器配置函数
RCC_Configuration();//时钟配置
GPIO_Configuration();//GPIO配置
HC_SR();//HC_SR501引脚配置
USART1_Configuration();//串口配置函数
while(1)
{
GPIO_ResetBits(GPIOC,GPIO_Pin_0);//证明系统成功进入该循环
if(HC_SR501_Statue()==1)//如果返回状态为1 ,则该判断语句成立,输出有人
{
printf("有人\r\n");
}
else printf("没人\r\n");
delay_ms(500); //防止输出太过频繁
}
}
工程文件和pdf:
红外传感器.7z
(5.92 MB, 下载次数: 85)
|