> 文章列表 > IMX6ULL裸机篇--向GPIO驱动添加中断处理函数

IMX6ULL裸机篇--向GPIO驱动添加中断处理函数

IMX6ULL裸机篇--向GPIO驱动添加中断处理函数

一.   GPIO中断

在前几章节试验中我们只是使用到了 GPIO 最基本的输入输出功能,本章我们需要使用
GPIO 的中断功能。接下来,我们可以把按键设置为中断模式。

二.  IMX6ULL-GPIO中断设置

设置按键 KEY0 的中断:

1.  首先设置 GPIO的中断触发方式。

参考IMX6ULL参考手册中,第28章节GPIO部分,即GPIO_ICR1或 GPIO_ICR2寄存器

触发方式有如下四种:低电平触发,高电平触发,上升沿触发,下降沿触发。

对于设置按键中断实验,根据原理图可知,我们设置KEY0,也就是UART1_CTS这个IO为中断下降沿触发。

2. 使能 GPIO对应的中断。

设置GPIO_IMR寄存器。

3. 处理完中断以后,需要清除中断标志位。

清除中断状态寄存器GPIO_ISR寄存器相应的位。GPIO_ISR 写1清零。

4. GIC中断控制器配置

(1)  使能相应的中断ID。

KEY0即为UART1_CTS口,我们需要确认UART1_CTS对应的中断ID。

通过参考手册查询,我们知道UART1_CTS对应于GPIO1_IO18。

通过查参考手册第三章节,我们知道GPIO1_IO18对应的中断ID为67+32 = 99(要加上前面的32个SGI和PPI中断)。

(2)  使能中断优先级。

(3)  注册GPIO1_IO18的中断处理函数。

三.  代码实现