# 按键实验 ## 硬件分析 1. RST 复位按键。该按键连接至 i.MX 6U 的 POR 引脚,当该引脚为低电平时会引起i.MX 6U 芯片的复位(复位的基本现象是程序从头开始运行)。从按键的原理图可知,该按键在没有被按下的时候,引脚状态为高电平,当按键按下时,引脚状态为低电平(按键所在的电路导通,引脚接到地)。所以,平时 POR_B 引脚保持高电平,芯片正常运行,按下按键时产生复位,如图所示: ![](media/image-20210814204957996.png) 2. MODE 按键。MODE 按键最为特殊,它通过一系列电路连接至两个引脚BOOT_MODE[0]和 BOOT_MODE[1],当该按键按下时,BOOT_MODE[0]引脚状态为高电平,BOOT_MODE[1]则相反为低电平。BOOT_MODE[0]和 BOOT_MODE[1]都具有 GPIO 的功能,即我们可以选取这二者中任意一个设置成 GPIO 的输入模式并检测相应的输入电平,来判断按键是否被按下。MODE 按键这样设计是为了方便切换芯片的启动方式,芯片复位启动后会检测这两个引脚的电平,根据 BOOT_MODE[0]和BOOT_MODE[1]的电平状态来选择 FLASH 还是 USB 的启动方式。在本章实验中我们不使用该按键。MODE 按键在原理图中的位置如图 所示 ![](media/image-20210814205226680.png) 3. ON/OFF 按键。该按键连接至 i.MX 6U 的 ONOFF 引脚,长按可以实现开关机。该按键不要用作普通按键使用。ON/OFF 按键在原理图中的位置如图所示 ![](media/image-20210814205453443.png) 4. KEY 按键。该按键连接至 SNVS_TAMPER1 引脚,用作普通的按键。本实验将用该按键实现 GPIO 输出功能。KEY 按键在原理图中的位置如图所示 ![](media/image-20210814205511087.png) 5. 触摸按键:该按键是电容触摸 ![](media/image-20210814205614448.png) 总结分析:本章节主要控制KEY按键,即GPIO5_1 ![](media/image-20210814205850872.png) ## 代码分析 参考【09.key】代码 ### bsp_key.c ```c #include "bsp_key.h" /* 所有引脚均使用同样的PAD配置 * 配置说明 : * 转换速率: 转换速率慢 * 驱动强度: R0/6 * 带宽配置 : medium(100MHz) * 开漏配置: 关闭 * 拉/保持器配置: 关闭 * 拉/保持器选择: 保持器(上面已关闭,配置无效) * 上拉/下拉选择: 100K欧姆下拉(上面已关闭,配置无效) * 滞回器配置: 关闭 */ #define KEY_PAD_CONFIG_DATA (SRE_0_SLOW_SLEW_RATE| \ DSE_6_R0_6| \ SPEED_2_MEDIUM_100MHz| \ ODE_0_OPEN_DRAIN_DISABLED| \ PKE_0_PULL_KEEPER_DISABLED| \ PUE_0_KEEPER_SELECTED| \ PUS_0_100K_OHM_PULL_DOWN| \ HYS_1_HYSTERESIS_ENABLED) void key_init(void) { CCM_CCGR1_CG13(0x3);//开启GPIO1的时钟 /*设置 红灯 引脚的复用功能以及PAD属性*/ IOMUXC_SetPinMux(KEY_IOMUXC,0); IOMUXC_SetPinConfig(KEY_IOMUXC, KEY_PAD_CONFIG_DATA); KEY_GPIO->GDIR &= ~(1<DR &(1<