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的中断处理函数。