This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

GPIO中断无法跳转问题



一个问题很纠结,希望专家和各位同事看下指点一下,不胜感激:

      环境为:Windows操作系统下  CCS5.2     

     通过GPIO0引脚接收方波,然后配置下降沿触发IRQ中断,触发后相应的中断状态寄存器显示中断已经发发生,但是没有发生任何的跳转(包括中断向量表的跳转),请问是什么原因呢?

 

在三个月前遇到过这个问题,但是后来使能GPIO1中断后,中断发生了跳转,但是三个月后在代码和处理器板子等都没有改变的情况下,却产生不了中断了!希望贵公司给予指点,谢谢!

  • 用的是哪颗芯片?

    板子还能进GPIO1中断么? 查一下中断使能位有没有置1?

  • TMS320C6A8168芯片,确定GPIO可以产生中断,而且我之前都调通了的,只是过了几个月 后又调不通了,换了硬件也不行

  • 如果中断标志位能置起来的话, 感觉还是软件的问题,  你用的是DSP interrupt还是ARM interrrupt?

  • arm中断,如果是代码的问题的话,最可能是哪里的问题呢?

       基本的过程为:我首首先通过CPSR使能IRQ中断,然后使能系统中断,再使能GPIO中断,在设置完触发条件(下降沿)后各个中断状态寄存器就显示有中断了。

  • AINTC只支持电平触发(level senstive)的中断, 将GPIO中断设成电平触发.

  • 水平触发也一样,不跳转,之前也试过,我代码如下,您有时间的话帮忙分析一下那里出错了吧, 谢谢

     

     


             ;屏蔽所有中断
             ldr  r0, INTCPS_MIR_SET0
             mov  r1, #0xff
             orr  r1,  r1, #0xff00
             orr  r1,  r1, #0xff0000
             orr  r1,  r1, #0xff000000
             str  r1, [r0],#0x20
             str  r1, [r0],#0x20
             str  r1, [r0],#0x20
             str  r1, [r0]

             ;中断状态清除
             ldr  r0, INTCPS_ISR_CLEAR0
             str  r1, [r0],#0x20
             str  r1, [r0],#0x20
             str  r1, [r0],#0x20
             str  r1, [r0]

             ldr  r0, GPIO_IRQSTATUS_CLR_0
             str  r1, [r0],#0x20
             str  r1, [r0],#0x20
             str  r1, [r0],#0x20
             str  r1, [r0]


             ;GPIO To FPGA reset(gp1)
             ldr r0,GPIO_OE
             ldr r1,[r0]
             bic r1,r1,#0x2  ;GAI 00-99
             str r1,[r0]

              ldr  r0, GPIO_DATAOUT
              ldr  r2, [r0]
              orr  r2, r2,#0x2
              bic  r3, r2,#0x2

              str  r2, [r0]
              str  r3, [r0]
              str  r2, [r0]


             ;与FPGA通信的引脚(gp0)配置为输入(接收方波)
             ldr  r0, GPIO_OE
             ldr  r1, [r0]
             orr  r1, r1, #0x1
             str  r1, [r0]


             ldr  r0,  INTCPS_ILR0 ; 96号GPIO中断 IRQ,优先级0
             mov  r1,  #0x0
             mov  r2,  #0x4
             str  r1,  [r0,#0x180]
          

             ;GPIO模块使能中断
             ldr  r0, GPIO_IRQSTATUS_SET_0
             ldr  r1, [r0]
             orr  r1, r1, #0x1    
             str  r1, [r0]
             str  r1, [r0,#4]

     

             ;trigger condition  level
             ldr  r0, GPIO_LEVELDETECT1              ;高电平触发

            ldr  r1, [r0]
             orr  r1, r1,#0x1
             str  r1, [r0]


             ;解除中断屏蔽
             ldr  r0, INTCPS_MIR0
             mov  r1,#0 
            ldr   r1, [r0,#0x60]      
            bic   r1, r1,#0x1         
            str   r1, [r0,#0x60]      

            LDR  R0, INTCPS_ISR_SET0
            mov  r1, #0xff
            orr  r1,  r1, #0xff00
            orr  r1,  r1, #0xff0000
            orr  r1,  r1, #0xff000000
            str  r1, [r0],#0x20
            str  r1, [r0],#0x20
            str  r1, [r0],#0x20
            str  r1, [r0]


             ;enable IRQ interrupt
             mrs  r0, CPSR
             bic  r0,r0, #0x80
             msr  CPSR_cxsf,r0