OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4175|回复: 4

算是C语言问题吧,!取反符号

[复制链接]

84

主题

347

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2008
金钱
2008
注册时间
2014-7-1
在线时间
189 小时
发表于 2015-10-15 15:01:28 | 显示全部楼层 |阅读模式
5金钱
轻触开关,按一次开启仪器,再按一次关闭仪器,本来好好的,正常运行。后来想把on_off_key==0判断改为非零的判断,on_off_key!=0
结果怎么按都没反应了,感觉很奇怪,特来求问

t=scan_key();//读取物理按键按下值
switch(t)
{
case ONOFF_PRES ://开关机
on_off_key=!on_off_key;
if(on_off_key==0)//开机
{
PM25_ne=1;//打开pm2.5传感器
SHOW_ne=1;//打开显示屏
touch_down_detection=touch_pm25;//默认检测PM2.5
touch_down=touch_pm25;
touch_auto_manu=1;//暂停键为1,默认启动
}
else
{
HCHO_ne=0;//关闭甲醛
co2_ne=0;//关闭二氧化碳
PM25_ne=0;//关闭pm2.5传感器
SHOW_ne=0;//关闭显示屏
led_control=0;//禁止灯带工作
led_green=0;
led_blue=0;
led_red=0;

Sys_Enter_Stop();//进入停机模式
}
break;      
default: break;
}




以下为主函数代码
[mw_shl_code=c,true]int main() { u8 t; Stm32_Clock_Init(9);//时钟初始化 delay_init(72);//延时初始化 SHOW_init();//串口屏初始化 hcho_init();//甲醛接口初始化 co2_init();//二氧化碳初始化 pm25_init();//PM2.5初始化 led_init();//led初始化 key_init();//按键初始化 Adc_Init();//AD初始化 battery_init();//充电判断端口初始化 TIM3_Int_Init(4999,7199);//10K计数频率,计数时间500ms anioncontrol_init();//负离子发生器控制初始化 led_blue=0; led_green=0; led_red=0; on_off_key=1;//开机标志 PM25_ne=1;//打开pm2.5传感器 SHOW_ne=1;//打开显示屏 while(1) { if(battery_check()||battery_charing==1)//电池电量足够或者适配器电源插上,允许运行 { t=scan_key();//读取物理按键按下值 switch(t) { case ONOFF_PRES ://开关机 on_off_key=!on_off_key; if(on_off_key==0)//开机 { PM25_ne=1;//打开pm2.5传感器 SHOW_ne=1;//打开显示屏 touch_down_detection=touch_pm25;//默认检测PM2.5 touch_down=touch_pm25; touch_auto_manu=1;//暂停键为1,默认启动 } else { HCHO_ne=0;//关闭甲醛 co2_ne=0;//关闭二氧化碳 PM25_ne=0;//关闭pm2.5传感器 SHOW_ne=0;//关闭显示屏 led_control=0;//禁止灯带工作 led_green=0; led_blue=0; led_red=0; Sys_Enter_Stop();//进入停机模式 } break; case ONOFF_SENSE://触摸校准 default: break; } on_off_control();//开机 if(time_number==1)// 一秒跟新一次数值 { show_battery();//显示电量 if(on_off_key==0)//开机 { SHOW_show();//显示数值 pm25_detection();//显示环境检测环 } if(led_control==0)//关闭led灯 { led_green=0; led_blue=0; led_red=0; } time_number=0; } touch_judge();//触摸检测 SHOW_key();//显示虚拟按键 anioncontrol_check();//检测空气质量状况,控制负离子净化器是否工作 } else//电池电量不足并且未充电,禁止运行 { HCHO_ne=0;//关闭甲醛 co2_ne=0;//关闭二氧化碳 PM25_ne=0;//关闭pm2.5传感器 SHOW_ne=0;//关闭显示屏 led_control=0;//禁止灯带工作 led_green=0; led_blue=0; led_red=0; ac_ne1=0;//禁止负离子发生器工作 led_red=1; delay_ms(500);//红灯亮500ms led_red=0; Sys_Enter_Stop();//进入停机模式 } } }[/mw_shl_code]



最佳答案

查看完整内容[请看2#楼]

你的t 有问题   自己思考吧
做一个相信自己的人
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13129
金钱
13129
注册时间
2012-11-26
在线时间
3814 小时
发表于 2015-10-15 15:01:29 | 显示全部楼层
你的t 有问题  

自己思考吧
学无止境
回复

使用道具 举报

84

主题

347

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2008
金钱
2008
注册时间
2014-7-1
在线时间
189 小时
 楼主| 发表于 2015-10-15 16:45:36 | 显示全部楼层
回复【2楼】jermy_z:
---------------------------------
t的定义在主函数进入的第一行,没有赋值。
scan_key()函数返回u8类型,t也是u8类型。
指点下,t哪里有问题,先谢谢了。
做一个相信自己的人
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13129
金钱
13129
注册时间
2012-11-26
在线时间
3814 小时
发表于 2015-10-15 16:54:42 | 显示全部楼层
回复【3楼】shenqihao:
---------------------------------
自己想
学无止境
回复

使用道具 举报

84

主题

347

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2008
金钱
2008
注册时间
2014-7-1
在线时间
189 小时
 楼主| 发表于 2015-10-15 22:25:43 | 显示全部楼层
回复【4楼】jermy_z:
---------------------------------
问题找到了,t没问题,停机模式问题,还是谢谢你。
做一个相信自己的人
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 17:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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