嵌入式ARM架构学习6——中断

发布于:2025-09-15 ⋅ 阅读:(17) ⋅ 点赞:(0)

一、KEY按键检测

工作原理

  1. 未按下按键

    • 当按键未被按下时,上拉电阻将KEY0引脚拉高到3.3V(高电平)。

    • 这意味着GPIO引脚读取到的电压为高电平。

  2. 按下按键

    • 当按键被按下时,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; 输出是才有用,所以关闭
 


网站公告

今日签到

点亮在社区的每一天
去签到