硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3754|回复: 1
收起左侧

[有问必答] 为什么蜂鸣器关不了的?

[复制链接]

22

主题

114

回帖

180

积分

初级会员

积分
180
发表于 2021-6-8 16:58:04 | 显示全部楼层 |阅读模式
代码如下:#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;然后发现蜂鸣器关不掉,这是什么原因???
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117563
QQ
发表于 2021-6-9 09:20:00 | 显示全部楼层
不好意思楼主,没太看懂你代码的逻辑关系。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-14 16:18 , Processed in 0.038368 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表