完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 悠悠飞雪 于 2013-11-2 13:21 编辑
写了三个与按键控制相关的小实验,一个是普通的扫描一个按键控制LED亮灭,第二个,用中断方式检测按键控制LED亮灭,第三个是 超越自我 提的,检测两个按键控制两个LED亮灭,前两个有野火的教程,很容易解决,不过第三个还是有个很大的问题,和 超越自我 讨论没有解决。 这是程序中检测按键的部分代码, uint16_t Key_Scan() //按键状态扫描 { uint16_t key1,key2; key1 = (~GPIO_ReadInputData( GPIOB )) & ( GPIO_Pin_0 | GPIO_Pin_1 ); //读取按键状态赋值给key1, //这点有个疑问,最初写的时候没有这么多的赋值,但如果那样就进行不了比较,这个问题到现在也没有解决 if( key1 != (uint16_t)0 ) { Delay(2000); //延时消抖 key2 = (~GPIO_ReadInputData( GPIOB )) & ( GPIO_Pin_0 | GPIO_Pin_1 ); if( key1 == key2 ) { key2 = (~GPIO_ReadInputData( GPIOB )) & ( GPIO_Pin_0 | GPIO_Pin_1 ); while( key2 != 0 )key2 = (~GPIO_ReadInputData( GPIOB )) & ( GPIO_Pin_0 | GPIO_Pin_1 ); //松开所有按键是结束按键扫描,返回键值 return key1; } } return 0; } 如果其中那些比较的语句比如 key1 == key2 换成 (~GPIO_ReadInputData( GPIOB )) & ( GPIO_Pin_0 | GPIO_Pin_1 ) == key1 在板子上不按预期工作,用软件仿真直接进不到if的执行语句里。 还请各位大神指导指导。 还要感谢 超越自我。 |
|
相关推荐
6 个讨论
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#在这里快速回复#很好啊!技术支持,谢谢分享,学习了!
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 19:11 , Processed in 0.729607 second(s), Total 73, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号