TI中文支持网
TI专业的中文技术问题搜集分享网站

GPIO中断无法跳转问题

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

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

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

 

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

Shine:

用的是哪颗芯片? 板子还能进GPIO1中断么? 查一下中断使能位有没有置1?

jams lebulang:

回复 Shine:

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

Shine:

回复 jams lebulang:

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

jams lebulang:

回复 Shine:

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

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

Shine:

回复 jams lebulang:

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

jams lebulang:

回复 Shine:

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

 

 

         ;屏蔽所有中断         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

赞(0)
未经允许不得转载:TI中文支持网 » GPIO中断无法跳转问题
分享到: 更多 (0)