1)、使能通用输入输出端口外设(GPIO)。
2)、配置相应GPIO口为普通输入输出口(I/O复用中选择复用功能)。
3)、配置相应GPIO口为输入。
4)、使能GPIO BANK中断。
5)、设置管脚中断触发类型。
6)、映射中断并注册中断服务函数。
GPIOIntTypeSet(SOC_GPIO_0_REGS, 7, GPIO_INT_TYPE_FALLEDGE); // 配置 USER0 KEY GPIO0[6] 为下降沿触发
GPIO_INT_TYPE_BOTHEDGE); // 配置USER1 KEY GPIO6[1] 为上升沿及下降沿触发
// 使能 GPIO BANK 中断
GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); // USER0 KEY GPIO0
GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); // USER1 KEY GPIO6
// 注册中断服务函数
IntRegister(C674X_MASK_INT4, USER0KEYIsr);
IntRegister(C674X_MASK_INT5, USER1KEYIsr);
// 映射中断到 DSP 可屏蔽中断
IntEventMap(C674X_MASK_INT4, SYS_INT_GPIO_B0INT);
IntEventMap(C674X_MASK_INT5, SYS_INT_GPIO_B6INT); // SYS_INT_GPIO_B6INT中断事件(如下:)
// 使能 DSP 可屏蔽中断
IntEnable(C674X_MASK_INT4);
IntEnable(C674X_MASK_INT5);
7)、使能DSP中断。
IntDSPINTCInit(); // 初始化 DSP 中断控制器
IntGlobalEnable(); // 使能 DSP 全局中断
中断服务函数:
GPIOBankIntDisable(SOC_GPIO_0_REGS, 0); // 禁用 GPIO BANK 0 中断
IntEventClear(SYS_INT_GPIO_B0INT); // 清除 GPIO BANK 0 中断状态
……………… ; //执行短小的中断函数。
GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); // 使能 GPIO BANK 0 中断
|