RT1052之GPIO中断

RT1052之GPIO中断

1、RT1052的中断系统

2、GPIO外设中断

GPIO可以因四种情况产生中断,分别是:在这里插入图片描述

  • 检测到低电平
  • 检测到高电平
  • 检测到上升沿
  • 检测到下降沿

由GPIOx_ICRn寄存器配置。

3、中断的初始化流程

  1. 通过GPIOx_ICRn寄存器配置GPIO外设的中断触发源(上升沿触发还是下降沿触发……)

  2. 通过GPIOx_IMR寄存器使能GPIO外设的中断信号(当检测到第4步选择的信号后,就发出一个信号给NVIC,在由NVIC转交内核)

    以上是配置GPIO外设的中断请求(在此之前,要先配置IO口电气属性和复用属性


    以下三步都是对内核的NVIC进行配置

  3. 配置RT1052的中断优先级分组

  4. 配置GPIO外设中断源优先级

  5. 使能GPIO外设中断源

4、代码实例

/* gpio及其中断初始化函数 */
void rt1052_gpio_interrupt_init(void)
{
    /* 配置IO口电气属性和复用属性(将IO口连接到GPIO外设) */
    IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B0_05_GPIO1_IO05, 0U); 
    IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B0_05_GPIO1_IO05, 
                        SRE_0_SLOW_SLEW_RATE|
                        DSE_0_OUTPUT_DRIVER_DISABLED|
                        SPEED_2_MEDIUM_100MHz|
                        ODE_0_OPEN_DRAIN_DISABLED|
                        PKE_1_PULL_KEEPER_ENABLED|
                        PUE_1_PULL_SELECTED|
                        PUS_3_22K_OHM_PULL_UP|
                        HYS_1_HYSTERESIS_ENABLED));

    /* 配置GPIO外设的中断请求 */
    gpio_pin_config_t key_config;
    key_config.direction = kGPIO_DigitalInput;    //输入模式
    key_config.outputLogic =  1;                  //默认高电平(输入模式时无效)
    key_config.interruptMode = kGPIO_IntLowLevel; //低电平触发中断

    GPIO_PinInit(CORE_BOARD_MODE_KEY_GPIO, CORE_BOARD_MODE_KEY_GPIO_PIN, &key_config);
    GPIO_PortEnableInterrupts(GPIO1, 1U << 5U); 
    
    /* 对NVIC进行配置 */
    set_IRQn_Priority(GPIO1_Combined_0_15_IRQn,Group4_PreemptPriority_6, Group4_SubPriority_1);
    EnableIRQ(GPIO1_Combined_0_15_IRQn);
    
    /* 至此,GPIO中断配置全部完成,当有低电平来到之后,就会触发中断,
    也就是进入函数 GPIO1_Combined_0_15_IRQHandle()*/
}

/* 中断服务函数 */
void GPIO1_Combined_0_15_IRQHandle(void)
{
    /* 清除中断标志位 */
    GPIO_PortClearInterruptFlags(GPIO1,
                                 1U << 5U); 
    /* 设置按键中断标志 */
    g_KeyDown[CORE_BOARD_MODE_KEY_ID] = true;
}

5、参考资料

1、[野火]《i.MX RT库开发实战指南》.pdf

2、IMXRT1052RM.pdf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值