|
给的例程里GPIO0可以进入中断,后来我在Core1上写的GPIO1也能进中断,但是我真正想用的是GPIO22和GPIO23的中断,并在Core1上触发。下面我给出我的代码,请各位大侠看看有什么问题- void SYN_init(void)
- {
- KickUnlock(); // 解锁关键寄存器
- GPIOPinMuxSet(SOC_DSC_BASE_REGS + SOC_DSC_PIN_CONTROL_0, GPIO00_LENDIAN, GPIO_NORMAL_ENABLED); // 底板按键
- GPIOPinMuxSet(SOC_DSC_BASE_REGS + SOC_DSC_PIN_CONTROL_0, GPIO01_BOOTMODE, GPIO_NORMAL_ENABLED);
- GPIOPinMuxSet(SOC_DSC_BASE_REGS + SOC_DSC_PIN_CONTROL_0, GPIO22_UARTCTS0, GPIO_NORMAL_ENABLED); //SYN_SAMPLE
- GPIOPinMuxSet(SOC_DSC_BASE_REGS + SOC_DSC_PIN_CONTROL_0, GPIO23_UARTRTS0, GPIO_NORMAL_ENABLED); //SYN
- KickLock(); // 锁定关键寄存器
- GPIODirModeSet(SOC_GPIO_0_REGS, GPIO00_LENDIAN, GPIO_DIR_INPUT); // 底板按键
- GPIODirModeSet(SOC_GPIO_0_REGS, GPIO01_BOOTMODE, GPIO_DIR_INPUT);
- GPIODirModeSet(SOC_GPIO_0_REGS, GPIO22_UARTCTS0, GPIO_DIR_INPUT); //SYN_SAMPLE
- GPIODirModeSet(SOC_GPIO_0_REGS, GPIO23_UARTRTS0, GPIO_DIR_INPUT); //SYN
- GPIOIntTypeSet(SOC_GPIO_0_REGS, GPIO00_LENDIAN, GPIO_INT_TYPE_FALLEDGE); // 配置为下降沿触发
- GPIOIntTypeSet(SOC_GPIO_0_REGS, GPIO01_BOOTMODE, GPIO_INT_TYPE_FALLEDGE);
- GPIOIntTypeSet(SOC_GPIO_0_REGS, GPIO22_UARTCTS0, GPIO_INT_TYPE_FALLEDGE); // 配置为下降沿触发
- GPIOIntTypeSet(SOC_GPIO_0_REGS, GPIO23_UARTRTS0, GPIO_INT_TYPE_FALLEDGE); // 配置为下降沿触发
- GPIOBankIntEnable(SOC_GPIO_0_REGS); // 使能 GPIO BANK 中断
- }
复制代码 上面的是管脚初始化程序。
- void GPIO_INT_init(int cpuINTn1,int cpuINTn2,int cpuINTn3)
- {
- CICDisableGlobalHostInt(SOC_CIC_0_REGS);
- CICEventMap(SOC_CIC_0_REGS, CSL_INTC0_GPINT22, 20); //对核0主机中断是0 对核1来说为20
- // KeyStone_CIC_event_map(CIC_Regs, CSL_INTC0_GPINT22, 20); //映射到CIC_out0
- CICEventMap(SOC_CIC_0_REGS, CSL_INTC0_GPINT23, 21); //对核0主机中断是1 对核1来说为21
- // KeyStone_CIC_event_map(CIC_Regs, CSL_INTC0_GPINT23, 21);
- CICEnableGlobalHostInt(SOC_CIC_0_REGS);
- IntRegister(cpuINTn3, GPIO23_Isr);// 注册中断服务函数
- IntRegister(cpuINTn2, GPIO22_Isr);
- IntRegister(cpuINTn1, GPIO0_Isr);
- IntEventMap(cpuINTn3, SYS_INT_CIC0_OUT1_20); // 映射中断到 DSP 可屏蔽中断
- IntEventMap(cpuINTn2, SYS_INT_CIC0_OUT0_20);
- IntEventMap(cpuINTn1, SYS_INT_GPINT);
- IntEnable(cpuINTn3); // 使能 DSP 可屏蔽中断
- IntEnable(cpuINTn2);
- IntEnable(cpuINTn1);
- }
复制代码 这是GPIO中断初始化程序。
- /****************************************************************************/
- /* 外设初始化 */
- /****************************************************************************/
- void PeriphInit()
- {
- // 驱动库版本
- Version();
- SYN_init();
- }
- void INT_init()
- {
- // 初始化 DSP 中断控制器
- IntDSPINTCInit();
- GPIO_INT_init(4,5,6);
- // 使能 DSP 全局中断
- IntGlobalEnable();
- }
- /****************************************************************************/
- /* 主函数 */
- /****************************************************************************/
- int main(void)
- {
- int i, status = 0;
- PeriphInit(); // 外设初始化
- INT_init(); // 中断初始化
- while(1)
- {
- }
- }
复制代码 这是在主程序中调用的代码。
这个程序现在只有GPIO1能进中断。我用STK的程序GPIO22和GPIO23是能够进入中断的,所以我怀疑是创龙的库有问题或者是有什么函数忘记调用了
请帮忙看看是什么问题吧,谢谢
|
|