新手上路
- 积分
- 33
- 金钱
- 33
- 注册时间
- 2020-5-9
- 在线时间
- 9 小时
|
10金钱
本帖最后由 Rickyking 于 2020-5-13 19:47 编辑
求大神!STM32智能窗户中 HC SR501人体红外感应部分调试 冲突 单开单关都可以 定义都有 应该都没问题
放一起就重复开关窗 红外感应模块一直输出高电平 怎么可以解决
if((HW_flag == 0) && (Window_Open_Flag == 0)) //红外感应无人 开窗
{
Window_Open_Flag = 1;Window_Close_Flag = 0;
// Gui_DrawFont_GBK16(10,110,WHITE,BLUE,"wind open");
Motor_Ctrl_Func(1,3,250); //1电机正转 3速度 250旋转角
delay_nms(50);
}
else if((HW_flag == 1) && (Window_Close_Flag == 0)) //红外感应有人 关窗
{
Window_Open_Flag = 0;Window_Close_Flag = 1;
// Gui_DrawFont_GBK16(10,110,WHITE,BLUE,"wind close");
Motor_Ctrl_Func(2,3,250); //2电机反转 3速度 250旋转角
delay_nms(50);
}
主程序如下
#include "stm32f10x.h"
#include "delay.h"
#include "sta_tcpclent_test.h"
#define HW PBin(10)
u16 n=0,HW_flag=0;
void HW_Work(void)
{
if(HW==1)
{
n=0;
HW_flag=1;
}
n++;
if(n>=100)
{
n=0;
if(HW==0)
{
HW_flag=0;
}
}
}
#define MAIN1_ON GPIO_SetBits(GPIOA,GPIO_Pin_0) //GPIOAêÇò»¸ö½á11ìåÖ¸Õë Ö¸ÏòGPIOA_BASEμĽá11ìåTypeDef
#define MAIN2_ON GPIO_SetBits(GPIOC,GPIO_Pin_15)
#define MAIN3_ON GPIO_SetBits(GPIOC,GPIO_Pin_14)
#define MAIN4_ON GPIO_SetBits(GPIOC,GPIO_Pin_13)
#define MAIN1_OF GPIO_ResetBits(GPIOA,GPIO_Pin_0)
#define MAIN2_OF GPIO_ResetBits(GPIOC,GPIO_Pin_15)
#define MAIN3_OF GPIO_ResetBits(GPIOC,GPIO_Pin_14)
#define MAIN4_OF GPIO_ResetBits(GPIOC,GPIO_Pin_13)
#define MBIN1_ON GPIO_SetBits(GPIOA,GPIO_Pin_6)
#define MBIN2_ON GPIO_SetBits(GPIOA,GPIO_Pin_5)
#define MBIN3_ON GPIO_SetBits(GPIOA,GPIO_Pin_4)
#define MBIN4_ON GPIO_SetBits(GPIOA,GPIO_Pin_3)
#define MBIN1_OF GPIO_ResetBits(GPIOA,GPIO_Pin_6)
#define MBIN2_OF GPIO_ResetBits(GPIOA,GPIO_Pin_5)
#define MBIN3_OF GPIO_ResetBits(GPIOA,GPIO_Pin_4)
#define MBIN4_OF GPIO_ResetBits(GPIOA,GPIO_Pin_3)
//μç»ú3õê¼»ˉ
void Motor_Port_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //éùÃ÷ò»¸ö½á11ìåGPIO_InitStructure£¬½á11ìåÔ-DíóéGPIO_InitTypeDefè·¶¨
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
//′ò¿a1رÕíaéèêä3öê±Öó¶Ë¿ú
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE);
//¸Ä±äÖ¸¶¨1ü½ÅμÄó3éäGPIO_Remap_SWJ_JTAGDisable ,JTAG-DP½ûóà + SW-DP ê1Äü
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0; //Moror A IN1£¿
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_15|GPIO_Pin_14|GPIO_Pin_13; //Moror A IN2 IN3 IN4
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIOC,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_5|GPIO_Pin_4|GPIO_Pin_3; //Moror B IN1 IN2 IN3 IN4
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIOA,&GPIO_InitStructure);
}
//μç»úÕy·′×aoˉêy
void Motor_Ctrl_Func( u8 Dir , u8 Speed ,u16 Cir)
{
u16 i;
if(Dir == 1) //Õy×a ¿a′°
{
for(i = 0; i < Cir; i++)
{
MAIN1_ON;MAIN2_OF;MAIN3_OF;MAIN4_OF; //0001
MBIN4_ON;MBIN3_OF;MBIN2_OF;MBIN1_OF; //1000
delay_nms(Speed);
MAIN1_OF;MAIN2_ON;MAIN3_OF;MAIN4_OF; //0010
MBIN4_OF;MBIN3_ON;MBIN2_OF;MBIN1_OF; //0100
delay_nms(Speed);
MAIN1_OF;MAIN2_OF;MAIN3_ON;MAIN4_OF; //0100
MBIN4_OF;MBIN3_OF;MBIN2_ON;MBIN1_OF; //0010
delay_nms(Speed);
MAIN1_OF;MAIN2_OF;MAIN3_OF;MAIN4_ON; //1000
MBIN4_OF;MBIN3_OF;MBIN2_OF;MBIN1_ON; //0001
delay_nms(Speed);
}
}
else if(Dir == 2) //·′×a 1Ø′°
{
for(i = 0; i < Cir; i++)
{
MAIN1_OF;MAIN2_OF;MAIN3_OF;MAIN4_ON; //1000
MBIN4_OF;MBIN3_OF;MBIN2_OF;MBIN1_ON; //0001
delay_nms(Speed);
MAIN1_OF;MAIN2_OF;MAIN3_ON;MAIN4_OF; //0100
MBIN4_OF;MBIN3_OF;MBIN2_ON;MBIN1_OF; //0010
delay_nms(Speed);
MAIN1_OF;MAIN2_ON;MAIN3_OF;MAIN4_OF; //0010
MBIN4_OF;MBIN3_ON;MBIN2_OF;MBIN1_OF; //0100
delay_nms(Speed);
MAIN1_ON;MAIN2_OF;MAIN3_OF;MAIN4_OF; //0001
MBIN4_ON;MBIN3_OF;MBIN2_OF;MBIN1_OF; //1000
delay_nms(Speed);
}
}
else
{
MAIN1_OF;MAIN2_OF;MAIN3_OF;MAIN4_OF; //0000
MBIN4_OF;MBIN3_OF;MBIN2_OF;MBIN1_OF; //0000
}
static u8 Window_Open_Flag = 0;
static u8 Window_Close_Flag = 0;
}
void Window_Ctrl_Func()
{
if((HW_flag == 0) && (Window_Open_Flag == 0)) //oìía¸Dó| ¿a′°
{
Window_Open_Flag = 1;Window_Close_Flag = 0;
Gui_DrawFont_GBK16(10,110,WHITE,BLUE,"wind open");
Motor_Ctrl_Func(1,3,250);
delay_nms(50);
}
else if((HW_flag == 1) && (Window_Close_Flag == 0)) //oìía¸Dó| 1Ø′°
{
Window_Open_Flag = 0;Window_Close_Flag = 1;
Gui_DrawFont_GBK16(10,110,WHITE,BLUE,"wind close");
Motor_Ctrl_Func(2,3,250);
delay_nms(50);
}
}
int main(void)
{
u8 a=0;
SystemInit();
delay_init(72); //Ñóê±3õê¼»ˉ
Motor_Port_Init();
while(1)
{
Window_Ctrl_Func();
HW_Work();
delay_nms(200);
}
}
|
|