博客
关于我
MSM8916 海信M9模块学习记录三:开机按键、音量上下按键
阅读量:675 次
发布时间:2019-03-15

本文共 1880 字,大约阅读时间需要 6 分钟。

设计原理图:

这里写图片描述这里写图片描述

引脚说明:

PIN No. Pin Value IO Votage MSM’s Tye Functional description
PIN030 PIN (KEY_PWR_ON) 开机键 - DI Keypad poweron detect input
PIN031 PIN (KEY_PM_RESIN) 下键 - “DO-ZDO” PMU_KEY
PIN032 PIN (KEY_VOL_UP) 上键 GPIO107 B-PD:nppukp Configurable I/O

1、主要初始化函数位置:

/ptboce/bootable/bootloader/lk/target/M9PLUS_10/init.c

这里写图片描述

主要代码:

#include 
#define TLMM_VOL_UP_BTN_GPIO 107/* Return 1 if vol_up pressed */int target_volume_up() //按键上初始化代码{ uint8_t status = 0; gpio_tlmm_config(TLMM_VOL_UP_BTN_GPIO, 0, GPIO_INPUT, GPIO_PULL_UP, GPIO_2MA, GPIO_ENABLE); /* Wait for the gpio config to take effect - debounce time */ thread_sleep(10); /* Get status of GPIO */ status = gpio_status(TLMM_VOL_UP_BTN_GPIO); /* Active low signal. */ return !status;}/* Return 1 if vol_down pressed */uint32_t target_volume_down() //按键下初始化代码{ /* Volume down button tied in with PMIC RESIN. */ return pm8x41_resin_status();}#if FEATURE_HS_BOOT_SYSTEM_HS/* Return 1 if pwr pressed */uint32_t target_pwr_key() //开关按键初始化代码{ /* Volume down button tied in with PMIC RESIN. */ return pm8x41_get_pwrkey_is_pressed();}#endifstatic void target_keystatus() //按键总初始化代码{ keys_init(); if(target_volume_down()) keys_post_event(KEY_VOLUMEDOWN, 1); if(target_volume_up()) keys_post_event(KEY_VOLUMEUP, 1);#if FEATURE_HS_BOOT_SYSTEM_HS if(target_pwr_key()) keys_post_event(KEY_PWR, 1);#endif}

次要代码:

/ptboce/bootable/bootloader/lk/dev/keys/keys.c

这里写图片描述

static unsigned long key_bitmap[BITMAP_NUM_WORDS(MAX_KEYS)];void keys_init(void){    memset(key_bitmap, 0, sizeof(key_bitmap));}

从初始化代码上看,开关按键和音量下键是M9源码中默认的,不需要去重新定义和配置,直接调用封装好的函数初始化就好了。二音量上键,需要定义一下(GPIO107),并初始化。

2、主要外部调用函数

/bootable/bootloader/lk/dev/pmic/pm8916/pm8916.c

/bootable/bootloader/lk/dev/pmic/pm8916/include/pm8916.h

这里写图片描述

uint8_t pm_get_power_on_status(void)uint32_t pm_get_chg_voltage()

参考学习:

你可能感兴趣的文章
nginx一些重要配置说明
查看>>
Nginx一网打尽:动静分离、压缩、缓存、黑白名单、跨域、高可用、性能优化......
查看>>
Nginx下配置codeigniter框架方法
查看>>
Nginx与Tengine安装和使用以及配置健康节点检测
查看>>
Nginx中使用expires指令实现配置浏览器缓存
查看>>
Nginx中使用keepalive实现保持上游长连接实现提高吞吐量示例与测试
查看>>
Nginx中如何配置WebSocket代理?
查看>>
Nginx中实现流量控制(限制给定时间内HTTP请求的数量)示例
查看>>
nginx中配置root和alias的区别
查看>>
nginx主要流程(未完成)
查看>>
Nginx之二:nginx.conf简单配置(参数详解)
查看>>
vue中各模块加载和渲染的过程
查看>>
Nginx从入门到精通
查看>>
Nginx从入门到精通(全)
查看>>
Nginx从安装到高可用,一篇搞定!
查看>>
Nginx代理websocket配置(解决websocket异常断开连接tcp连接不断问题)
查看>>
Nginx代理初探
查看>>
nginx代理地图服务--离线部署地图服务(地图数据篇.4)
查看>>
Nginx代理外网映射
查看>>
Nginx代理模式下 log-format 获取客户端真实IP
查看>>