W801学习笔记六:HLK-W801制作学习机/NES游戏机(按钮)

W801学习笔记:GPIO驱动与节省引脚策略
文章介绍了在W801开发中,如何通过GPIO控制五个导航按钮和四个功能键,同时提出优化方法如分组和片选以减少引脚占用。作者讨论了现有实现的局限以及未来可能的改进措施。

这个比较简单,我的实现方式是把引脚设为INPUT并拉高,当钮按下时接地。

安排了一个五项导航按钮和四个按钮,使用PA7-15。都是PA的好处是可以一次读出所有寄存器。

keyDefine.h

#ifndef __DEYDEFINE_H__
#define __DEYDEFINE_H__


#define KEY_GPIO_CENT 	15
#define KEY_GPIO_LEFT 	14
#define KEY_GPIO_DOWN 	13
#define KEY_GPIO_RHT 	12
#define KEY_GPIO_UP	 	11
#define KEY_GPIO_A 		10
#define KEY_GPIO_B 		9
#define KEY_GPIO_C 		8
#define KEY_GPIO_D 		7


#define KEY_UP (!(keys & (0x1 << KEY_GPIO_UP)))
#define KEY_DOWN (!(keys & (0x1 << KEY_GPIO_DOWN)))
#define KEY_LEFT (!(keys & (0x1 << KEY_GPIO_LEFT)))
#define KEY_RHT (!(keys & (0x1 << KEY_GPIO_RHT)))
#define KEY_CENT (!(keys & (0x1 << KEY_GPIO_CENT)))
#define KEY_A (!(keys & (0x1 << KEY_GPIO_A)))
#define KEY_B (!(keys & (0x1 << KEY_GPIO_B)))
#define KEY_C (!(keys & (0x1 << KEY_GPIO_C)))
#define KEY_D (!(keys & (0x1 << KEY_GPIO_D)))

#define KEY_INPUT (*(TLS_REG*)HR_GPIO_DATA)

#
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vvind

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值