一、KEY按键检测
工作原理
未按下按键:
当按键未被按下时,上拉电阻将KEY0引脚拉高到3.3V(高电平)。
这意味着GPIO引脚读取到的电压为高电平。
按下按键:
当按键被按下时,KEY0引脚被直接连接到地(GND),即低电平(0V)。
这意味着GPIO引脚读取到的电压为低电平。
#include "key.h"
#include "MCIMX6Y2.h"
#include "fsl_iomuxc.h"
void key_init(void)
{
// UART1_CTS KEY0
// 复用功能 找到IO功能的 配置为GPIO01_18
IOMUXC_SetPinMux(IOMUXC_UART1_CTS_B_GPIO1_IO18, 0);
// 电气引脚配置——12选使能(使能1) 13选上拉还是保持(上拉1) 14选上拉电阻阻值(接近10k 11) 11(1开漏 0推挽)
IOMUXC_SetPinConfig(IOMUXC_UART1_CTS_B_GPIO1_IO18, 0xF0B0);
// 寄存器方向设置 作为输入
GPIO1->GDIR &= ~((1 << 18));
}
int key_check(void)
{
// GPIO01_io18为1(高电平),表达式输出输出0,表示按键未被按下
return ((GPIO1->DR & (1 << 18)) == 0);
}
三、中断流程
1.硬件介绍
(1)两红一黄三个开关,中间是复位按钮,左边低功耗按钮,右边为允许用户独立控制的试验按键
(2)原理图分析:开关断开高电平,开关按下低电平
2.编写按键代码(轮训方式)
(1)查阅手册
参考文档: 1. IMX6ULL_MINI_V2.2(Mini底板原理图).pdf
2. IMX6ULL参考手册.pdf
(1)初始化
(1)复用功能配置
Chapter 32:IOMUX Controller (IOMUXC)
IOMUXC_SW_MUX_CTL_PAD_UART1_CTS_B: 低四位(0101)
IOMUXC_SetPinMux(IOMUXC_UART1_CTS_B_GPIO1_IO18, 0);
SION(信号监控)1: 0 //0 DISABLED — Input Path is determined by functionality
MUX_MODE(复用功能)4: 0101//ALT5 — Select mux mode: ALT5 mux port: GPIO1_IO03 of instance: gpio1
(2)电气特性
Chapter 32:IOMUX Controller (IOMUXC)
IOMUXC_SW_PAD_CTL_PAD_UART1_CTS_B
IOMUXC_SetPinConfig(IOMUXC_UART1_CTS_B_GPIO1_IO18, 0xF080);
HYS(压摆率)1: 0 //0 HYS_0_Hysteresis_Disabled; 输入 不开启
PUS(上拉或者下拉)2: 11 // PUS_3_22K_Ohm_Pull_Up — 22K Ohm Pull Up
PUE(拉与保持选择)1: 1 //选择拉
PKE(拉或保持使能)1: 1 //使能
ODE(漏极开漏)1: 0 //使能
SPEED(速度)2: 10 //SPEED_2_medium_100MHz_ — medium(100MHz)
DSE(驱动能力)3: 000 //DSE_0_output_driver_disabled_ — output driver disabled; 输出是才有用,所以关闭