|
代码如下:#define BEEP_ON GPIO_SetBits(GPIOG,GPIO_Pin_8)
#define BEEP_OFF GPIO_ResetBits(GPIOG,GPIO_Pin_8)
void work_inflation(void)
{
//任务初始化
unsigned short int a = Ad; //此时的压力值
unsigned short int b = setparm_t.Fill_PressureMax; //充气压力上限设定值
unsigned short int c = setparm_t.Fill_PressureMin; //充气压力下限设定值
unsigned short int d = setparm_t.FILLTime; //充气时间
unsigned short int e = FillPressure; //保存的压力值
LOOP:
BEEP_OFF;
time_count=0;
work_state =WORK_IDLE;//默认进入空闲等待状态
;
while(1)
{
GPIO_SetBits(GPIOF,GPIO_Pin_9); //LED0对应引脚GPIOF.0拉高,灭 等同LED0=1;
GPIO_ResetBits(GPIOF,GPIO_Pin_10); //LED1对应引脚GPIOF.10拉低,亮 等同LED1=0;
printf("现在是充气状态");
//1--任务循环处理内容
//2-外部触发条件跳出任务
if(time_count==d*100)
{
break;
time_count = 0;
e = a;
}
printf("%d",FillFlag);
if(FillFlag == 0)
{
break;
goto LOOP;
}
}
if(FillFlag)
{
if((a<b)&&(a>c))
{
work_state = WORK_blance;
BalanceFlag = 1;
}
else
{
BEEP_ON;
FillFlag = 0;
time_count=0;
work_state = WORK_exhaust;
}
}
else
{
work_state =WORK_exhaust;//默认进入空闲等待状态
time_count = 0;
}
}
条件不满足时BEEP_ON蜂鸣器响,然后按下按键改变标志位进入 goto LOOP;然后发现蜂鸣器关不掉,这是什么原因???
|
|