周口市网站建设_网站建设公司_悬停效果_seo优化
2026/1/18 12:45:37 网站建设 项目流程

一、驱动配置

image

Device Drivers  --->Input device support  --->Keyboards  --->[*]ADC Ladder Buttons[*]GPIO Buttons

两种按键,一种是ADC按键,一个ADC引脚即可实现多按键检测
另外一种就是GPIO按键,一个引脚控制一个按键,还有按键矩阵,8个gpio可以监测16个按键(4*4)

二、设备树配置

1.ADC按键设备树

user_adc_keys: user-adc-keys {compatible = "adc-keys";io-channels = <&saradc 3>;io-channel-names = "buttons";keyup-threshold-microvolt = <1800000>;poll-interval = <100>;/* SW2 */vol-up-key {label = "volume up";linux,code = <KEY_VOLUMEUP>;press-threshold-microvolt = <410000>;};/* SW3 */vol-down-key {label = "volume down";linux,code = <KEY_VOLUMEDOWN>;press-threshold-microvolt = <870000>;};
};

2.ADC按键测试

image

3.GPIO按键设备树

这是放在根节点下的

keys:keys {compatible = "gpio-keys";pinctrl-names = "default";pinctrl-0 = <&button_pins>;autorepeat;key_down:key_down {label = "KEY_DOWN";linux,code = <KEY_DOWN>;gpios = <&gpio0 RK_PC1 GPIO_ACTIVE_LOW>;debounce-interval = <100>;};key_enter:key_enter {label = "KEY_ENTER";linux,code = <KEY_ENTER>;gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_LOW>;debounce-interval = <100>;};key_up:key_up {label = "KEY_UP";linux,code = <KEY_UP>;gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_LOW>;debounce-interval = <100>;};};

pinctrl设置引脚功能和内部上拉


&pinctrl {gpio-keys {button_pins: button-pins {rockchip,pins = <0  RK_PC1  RK_FUNC_GPIO  &pcfg_pull_up0  RK_PC0  RK_FUNC_GPIO  &pcfg_pull_up0  RK_PB6  RK_FUNC_GPIO  &pcfg_pull_up>;};};};

4.GPIO按键测试

image

三、踩坑经过

首先是引脚一定要对
其次原理图排针引脚名称与CPU上引脚名称不一致导致按键键值错位

image

实际的引脚

image

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询