C6657的GPIO22和GPIO23不能进中断问题 - TMS320C665x - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9301|回复: 7
打印 上一主题 下一主题

[未解决] C6657的GPIO22和GPIO23不能进中断问题

[复制链接]

32

主题

97

帖子

2049

积分

金牌会员

Rank: 6Rank: 6

积分
2049
跳转到指定楼层
楼主
发表于 2017-5-26 13:34:17 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
     给的例程里GPIO0可以进入中断,后来我在Core1上写的GPIO1也能进中断,但是我真正想用的是GPIO22和GPIO23的中断,并在Core1上触发。下面我给出我的代码,请各位大侠看看有什么问题
  1. void SYN_init(void)
  2. {
  3.         KickUnlock();     // 解锁关键寄存器
  4.         GPIOPinMuxSet(SOC_DSC_BASE_REGS + SOC_DSC_PIN_CONTROL_0, GPIO00_LENDIAN,  GPIO_NORMAL_ENABLED);       // 底板按键
  5.         GPIOPinMuxSet(SOC_DSC_BASE_REGS + SOC_DSC_PIN_CONTROL_0, GPIO01_BOOTMODE,  GPIO_NORMAL_ENABLED);
  6.         GPIOPinMuxSet(SOC_DSC_BASE_REGS + SOC_DSC_PIN_CONTROL_0, GPIO22_UARTCTS0,  GPIO_NORMAL_ENABLED);    //SYN_SAMPLE
  7.         GPIOPinMuxSet(SOC_DSC_BASE_REGS + SOC_DSC_PIN_CONTROL_0, GPIO23_UARTRTS0,  GPIO_NORMAL_ENABLED);    //SYN
  8.         KickLock();        // 锁定关键寄存器
  9.         GPIODirModeSet(SOC_GPIO_0_REGS, GPIO00_LENDIAN,  GPIO_DIR_INPUT);                    // 底板按键
  10.         GPIODirModeSet(SOC_GPIO_0_REGS, GPIO01_BOOTMODE,  GPIO_DIR_INPUT);
  11.         GPIODirModeSet(SOC_GPIO_0_REGS, GPIO22_UARTCTS0,  GPIO_DIR_INPUT);                  //SYN_SAMPLE
  12.         GPIODirModeSet(SOC_GPIO_0_REGS, GPIO23_UARTRTS0,  GPIO_DIR_INPUT);                  //SYN

  13.         GPIOIntTypeSet(SOC_GPIO_0_REGS, GPIO00_LENDIAN,  GPIO_INT_TYPE_FALLEDGE);         // 配置为下降沿触发
  14.         GPIOIntTypeSet(SOC_GPIO_0_REGS, GPIO01_BOOTMODE,  GPIO_INT_TYPE_FALLEDGE);
  15.         GPIOIntTypeSet(SOC_GPIO_0_REGS, GPIO22_UARTCTS0,  GPIO_INT_TYPE_FALLEDGE);      // 配置为下降沿触发
  16.         GPIOIntTypeSet(SOC_GPIO_0_REGS, GPIO23_UARTRTS0,  GPIO_INT_TYPE_FALLEDGE);      // 配置为下降沿触发

  17.         GPIOBankIntEnable(SOC_GPIO_0_REGS);                                                                                      // 使能 GPIO BANK 中断
  18. }
复制代码
上面的是管脚初始化程序。
  1. void GPIO_INT_init(int cpuINTn1,int cpuINTn2,int cpuINTn3)
  2. {
  3.         CICDisableGlobalHostInt(SOC_CIC_0_REGS);
  4.         CICEventMap(SOC_CIC_0_REGS, CSL_INTC0_GPINT22, 20);                 //对核0主机中断是0   对核1来说为20
  5. //        KeyStone_CIC_event_map(CIC_Regs, CSL_INTC0_GPINT22, 20);         //映射到CIC_out0
  6.         CICEventMap(SOC_CIC_0_REGS, CSL_INTC0_GPINT23, 21);                 //对核0主机中断是1   对核1来说为21
  7. //        KeyStone_CIC_event_map(CIC_Regs, CSL_INTC0_GPINT23, 21);
  8.         CICEnableGlobalHostInt(SOC_CIC_0_REGS);

  9.         IntRegister(cpuINTn3, GPIO23_Isr);// 注册中断服务函数
  10.         IntRegister(cpuINTn2, GPIO22_Isr);
  11.         IntRegister(cpuINTn1, GPIO0_Isr);

  12.         IntEventMap(cpuINTn3, SYS_INT_CIC0_OUT1_20); // 映射中断到 DSP 可屏蔽中断
  13.         IntEventMap(cpuINTn2, SYS_INT_CIC0_OUT0_20);
  14.         IntEventMap(cpuINTn1, SYS_INT_GPINT);

  15.         IntEnable(cpuINTn3);                                                          // 使能 DSP 可屏蔽中断
  16.         IntEnable(cpuINTn2);
  17.         IntEnable(cpuINTn1);
  18. }
复制代码
这是GPIO中断初始化程序。
  1. /****************************************************************************/
  2. /*              外设初始化                                                  */
  3. /****************************************************************************/
  4. void PeriphInit()
  5. {
  6.         // 驱动库版本
  7.         Version();
  8.         SYN_init();
  9. }

  10. void INT_init()
  11. {
  12.         // 初始化 DSP 中断控制器
  13.         IntDSPINTCInit();

  14.         GPIO_INT_init(4,5,6);
  15.         // 使能 DSP 全局中断
  16.         IntGlobalEnable();

  17. }
  18. /****************************************************************************/
  19. /*              主函数                                                      */
  20. /****************************************************************************/
  21. int main(void)
  22. {
  23.         int i, status = 0;

  24.         PeriphInit();           // 外设初始化
  25.         INT_init();               // 中断初始化

  26.     while(1)
  27.     {

  28.     }

  29. }
复制代码
这是在主程序中调用的代码。

这个程序现在只有GPIO1能进中断。我用STK的程序GPIO22和GPIO23是能够进入中断的,所以我怀疑是创龙的库有问题或者是有什么函数忘记调用了
请帮忙看看是什么问题吧,谢谢

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-5-5 03:28 , Processed in 0.038243 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表