野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11828|回复: 4

看完GPIO输入按键检测后写的程序老是有错

[复制链接]
发表于 2019-10-17 01:23:32 | 显示全部楼层 |阅读模式
我在看完13讲GPIO输入按键检测后按着火哥的方式写了程序,因为是自己写的,所以函数名和宏定义跟火哥的有些不一样,但是程序是正常的:如图 QQ截图20191017011927.png QQ截图20191017011939.png QQ截图20191017012001.png QQ截图20191017012018.png QQ截图20191017012039.png QQ截图20191017012056.png 所有程序都没问题,但是最后主函数while循环里面,if后面的函数,我如果用异或的方法,可以正常用按键控制led灯,但是如果我直接操作odr寄存器的方式,如上图,无论我按键怎么按,led灯都一直亮着,想问问各位大神这是为什么,是我理解错了吗还是
回复

使用道具 举报

发表于 2019-10-17 09:08:42 | 显示全部楼层
寄存器操作的GPIO->ODR == (0<<0);   这个等号有点刺眼!!!   你换成 = 试试!!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-17 10:59:07 | 显示全部楼层
wwhh 发表于 2019-10-17 09:08
寄存器操作的GPIO->ODR == (0

我换成了=号了,还是不行,我用异或的方法的时候按键可以正常控制led灯的亮暗,但是我用直接操作odr的方法的时候,灯只有一瞬间会亮
回复 支持 反对

使用道具 举报

发表于 2019-10-17 12:40:50 | 显示全部楼层
hkx 发表于 2019-10-17 10:59
我换成了=号了,还是不行,我用异或的方法的时候按键可以正常控制led灯的亮暗,但是我用直接操作odr的方 ...

那是你的按键你只按了一瞬间   你这个程序写的意思就是 按键按下 灯亮 送开灯灭
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-17 13:27:41 | 显示全部楼层
wwhh 发表于 2019-10-17 12:40
那是你的按键你只按了一瞬间   你这个程序写的意思就是 按键按下 灯亮 送开灯灭

哦哦我明白了,谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 21:58 , Processed in 0.028449 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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