1. 硬件电路 通过查看硬件原理图,用户自定义按键为GPIO0。
2. 按键配置 配置普通GPIO口、按键为输入、下降沿触发,使能中断。 GPIO中断使能寄存器:BINTEN 方向寄存器:DIR(与LED配置相似) 中断触发上升/下降沿寄存器:RSI/FAL 以上寄存器详GeneralPurpose Input Output (GPIO) User Guide.pdf。 代码: // 底板按键所在 GPIO 口 GPIOPinMuxSet(SOC_DSC_BASE_REGS + SOC_DSC_PIN_CONTROL_0,GPIO00_LENDIAN, GPIO_NORMAL_ENABLED); // 底板按键 GPIODirModeSet(SOC_GPIO_0_REGS, GPIO00_LENDIAN, GPIO_DIR_INPUT); // 配置为下降沿触发 GPIOIntTypeSet(SOC_GPIO_0_REGS,GPIO00_LENDIAN,GPIO_INT_TYPE_FALLEDGE); // 使能 GPIO BANK中断 GPIOBankIntEnable(SOC_GPIO_0_REGS); 3. 中断执行 进入中断清状态,并赋值FLAG。其中中断事件如下图:(GPIO中断事件)
// 禁用 GPIO 外设中断
GPIOBankIntDisable(SOC_GPIO_0_REGS); // 清除系统中断状态 IntEventClear(SYS_INT_GPINT); if(GPIOPinIntStatus(SOC_GPIO_0_REGS, GPIO00_LENDIAN) == GPIO_INT_PEND) { // 清除 GPIO 外设中断状态 GPIOPinIntClear(SOC_GPIO_0_REGS, GPIO00_LENDIAN); if(Flag == 0) { Flag = 1; } else { Flag = 0; } } // 使能 GPIO 外设中断 GPIOBankIntEnable(SOC_GPIO_0_REGS); 4. 配置中断 DSP可配置中断共有12个(INT4~INT15),将事件配置至中断输入并使能。 // 注册中断服务函数 IntRegister(C66X_MASK_INT4,USER0KEYIsr); // 映射中断到 DSP 可屏蔽中断 IntEventMap(C66X_MASK_INT4,SYS_INT_GPINT); // 使能 DSP 可屏蔽中断 IntEnable(C66X_MASK_INT4); // 使能 GPIO 外设中断 GPIOBankIntEnable(SOC_GPIO_0_REGS); 5. 运行 通过FLAG标志在主函数中运行,通过USER0按键可观察三个流水灯变化。 【按一下流水动作,再按一下停止。】
本资料来自于网络,只供学习! |