完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
u8 KEY_Scan(void)
{ static u8 key_up=1;//按键按松开标志 JTAG_Set(JTAG_SWD_DISABLE); if(key_up&&(KEY0==0||KEY1==0||KEY2==1)) { delay_ms(10);//去抖动 key_up=0; if(KEY0==0) { JTAG_Set(SWD_ENABLE); return 1; }else if(KEY1==0) { JTAG_Set(SWD_ENABLE); return 2; }else if(KEY2==1) { JTAG_Set (SWD_ENABLE); return 3; } }else if(KEY0==1&&KEY1==1&&KEY2==0)key_up=1; JTAG_Set(SWD_ENABLE); return 0;// 无按键按下 } 1、这里的u8 KEY_Scan(void) 定义无返回值,那么IF语句内的return=0/1/2/3 还有什么作用呢,我在书中看到的解释是对于不带回值的函数,应当用“void”定义为无类型,这样,系统就保证不使函数带回任何值,即禁止在调用的函数中使用被调用函数的返回值。此时在函数体中不得出现有返回值的return语句。 2、另外没看出key_up松开标志在程序中的作用(难道是防止出现有其他按键同时按的影响,而导致没有优先级),请指教 |
|
相关推荐
5个回答
|
|
key_up 在if(key_up&&(KEY0==0||KEY1==0||KEY2==1)) 中不就用到了, 就是如果有按键按下了, 就不进行键盘的扫描,这不就对了
|
|
|
|
key_up 在if(key_up&&(KEY0==0||KEY1==0||KEY2==1)) 中写的是key_up=1,那么我感觉着个没必要呢,因为当再次进入key_scan时static u8 key_up=1;不又重新赋值为1了吗
|
|
|
|
有用,key_up不为1的话就进不去循环了,在循环里面把它清零。书上不是说按键按一次要松开吗?就是这么实现的,LZ可以顺着程序理一理思路^_^(前几天我也纠结了好久,经别人指点才想通的,感觉编程好难的说,不知道怎么用程序去描述一种现象……)
|
|
|
|
发帖的时候还没看见原子前辈的回复,小弟是要回复LZ的……
|
|
|
|
原子师兄说的懂了
有一个地方有个疑问,求您指教 u8 KEY_Scan(void) { static u8 key_up=1;//按键按松开标志 JTAG_Set(JTAG_SWD_DISABLE); if(key_up&&(KEY0==0||KEY1==0||KEY2==1)) { delay_ms(10);//去抖动 key_up=0; if(KEY0==0) { JTAG_Set(SWD_ENABLE); return 1; }else if(KEY1==0) { JTAG_Set(SWD_ENABLE); return 2; }else if(KEY2==1) { JTAG_Set (SWD_ENABLE); return 3; } }else if(KEY0==1&&KEY1==1&&KEY2==0)key_up=1; JTAG_Set(SWD_ENABLE); return 0;// 无按键按下 } 假设现在是key0按下,那么 if(KEY0==0) { JTAG_Set(SWD_ENABLE); return 1; } 执行完以后,返回一个1,但是程序还要继续执行啊,继续执行 JTAG_Set(SWD_ENABLE); return 0;// 无按键按下 此时不就又返回一个0吗?(不知道是我哪理解错了,求指教) 我认为改为这样是对的,但是调试后不对,不知道为什么是哪理解错了。 else if(KEY0==1&&KEY1==1&&KEY2==0) { key_up=1; JTAG_Set(SWD_ENABLE); return 0;// 无按键按? } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1602 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1536 浏览 1 评论
967 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
680 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1579 浏览 2 评论
1860浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
641浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
513浏览 3评论
527浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
500浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 16:26 , Processed in 0.996606 second(s), Total 86, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号