嵌入式开发者社区

标题: 6748GPIO中断问题 [打印本页]

作者: sanxiaoke    时间: 2019-11-5 17:18
标题: 6748GPIO中断问题
本帖最后由 sanxiaoke 于 2019-11-5 17:23 编辑

我使用6748的GPIO8[10],GPIO8[9],GPIO8[8]作为中断源,当这三个引脚有任意一个电平有变化时候(上升下降沿触发),产生中断,进入同一个中断服务函数,但问题是总是进不去中断,不知什么原因,请各位大神帮忙看一下代码是否有问题
  1. void GPIOBankPinInterruptInit(void)        //GPIO 管脚中断初始化
  2. {
  3.     // 配置 GPIO8[10] 为上升及下降沿触发
  4.     GPIOIntTypeSet(SOC_GPIO_0_REGS, 139, GPIO_INT_TYPE_BOTHEDGE);
  5.     // 配置 GPIO8[9] 为上升及下降沿触发
  6.     GPIOIntTypeSet(SOC_GPIO_0_REGS, 138, GPIO_INT_TYPE_BOTHEDGE);
  7.     // 配置 GPIO8[8] 为上升及下降沿触发
  8.     GPIOIntTypeSet(SOC_GPIO_0_REGS, 137, GPIO_INT_TYPE_BOTHEDGE);

  9.     // 使能 GPIO BANK 中断
  10.     GPIOBankIntEnable(SOC_GPIO_0_REGS, 8);                  // GPIO8

  11.         // 注册中断服务函数
  12.         IntRegister(C674X_MASK_INT7, GPIO8Isr);

  13.         // 映射中断到 DSP 可屏蔽中断
  14.         IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B8INT);

  15.         // 使能 DSP 可屏蔽中断
  16.         IntEnable(C674X_MASK_INT7);
  17. }
复制代码
  1. void GPIO8Isr(void)                                                // GPIO中断服务函数
  2. {
  3. // 禁用 GPIO BANK 8 中断
  4.         GPIOBankIntDisable(SOC_GPIO_0_REGS, 8);

  5. // 清除 GPIO BANK 8 中断状态
  6.     IntEventClear(SYS_INT_GPIO_B8INT);

  7. // 清除 GPIO8[10] GPIO8[9] GPIO8[8]中断状态
  8.     GPIOPinIntClear(SOC_GPIO_0_REGS, 139);
  9.     GPIOPinIntClear(SOC_GPIO_0_REGS, 138);
  10.     GPIOPinIntClear(SOC_GPIO_0_REGS, 137);

  11.         printf("%d\n",state);        
  12.         
  13. // 使能 GPIO BANK 8 中断
  14.     GPIOBankIntEnable(SOC_GPIO_0_REGS, 8);
  15. }
复制代码






欢迎光临 嵌入式开发者社区 (https://51ele.net/) Powered by Discuz! X3.4