模块接线图
移植步骤中的导入.c和.h文件与
【CW32模块使用】DHT11温湿度传感器
相同,
只是将.c和.h文件更改为bsp_HumanIR.c与bsp_HumanIR.h。这里不再过多讲述,移植完成后面修改相关代码。
在文件bsp_HumanIR.c中,编写如下代码。
/*
* Change Logs:
* Date Author Notes
* 2024-06-20 LCKFB-LP first version
*/
#include "bsp_HumanIR.h"
#include "board.h"
/******************************************************************
* 函 数 名 称:HumanIR_Init
* 函 数 说 明:人体红外模块初始化
* 函 数 形 参:无
* 函 数 返 回:无
* 作 者:LC
* 备 注:无
******************************************************************/
void HumanIR_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct; // GPIO初始化结构体
RCC_HUMANIR_ENABLE(); // 使能GPIO时钟
GPIO_InitStruct.Pins = GPIO_HUMANIR; // GPIO引脚
GPIO_InitStruct.Mode = GPIO_MODE_INPUT_PULLUP; // 上拉输入
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; // 输出速度高
GPIO_Init(PORT_HUMANIR, &GPIO_InitStruct); // 初始化
}
/******************************************************************
* 函 数 名 称:Get_HumanIR
* 函 数 说 明:获取人体红外输出引脚的电平状态
* 函 数 形 参:无
* 函 数 返 回:0=感应到人体红外 1=未感应到人体红外
* 作 者:LC
* 备 注:无
******************************************************************/
char Get_HumanIR(void)
{
return ( GPIO_ReadPin(PORT_HUMANIR, GPIO_HUMANIR)?GPIO_Pin_SET:GPIO_Pin_RESET);
}
在文件bsp_HumanIR.h中,编写如下代码。
#ifndef _BSP_HUMANIR_H_
#define _BSP_HUMANIR_H_
#include "board.h"
#define RCC_HUMANIR_ENABLE() __RCC_GPIOA_CLK_ENABLE()
#define PORT_HUMANIR CW_GPIOA
#define GPIO_HUMANIR GPIO_PIN_1
void HumanIR_Init(void);
char Get_HumanIR(void);
#endif