在TI工程师帮助下,试了几个官方的裸机例程,里面好些都有对应的中断函数,但看了汇编的中断向量表的配置后,很是费解,下面是从GPIO例程和TIMER例程中复制的汇编的中断向量表的配置
这是定时器的
;interrupt vector table .sect "vecs"
.align 1024
vectors:
VEC_RESET Nested_Exception_service_routine ;Nested exception VEC_ENTRY NMI_ISR ;NMI/Exception
VEC_DUMMY ;RSVD
VEC_DUMMY ;RSVD
VEC_DUMMY ;interrupt 4
VEC_DUMMY ;interrupt 5
VEC_DUMMY ;interrupt 6 VEC_DUMMY ;interrupt 7 VEC_DUMMY ;interrupt 8 VEC_DUMMY ;interrupt 9
VEC_DUMMY ;interrupt 10
VEC_DUMMY ;interrupt 11
VEC_DUMMY ;interrupt 12
VEC_DUMMY ;interrupt 13
VEC_ENTRY Timer_ISR ;interrupt 14
VEC_ENTRY Timer_ISR ;interrupt 15
.end
这是GPIO的
;interrupt vector table .sect "vecs"
.align 1024
vectors:
VEC_RESET Nested_Exception_service_routine ;Nested exception VEC_ENTRY NMI_ISR ;NMI/Exception
VEC_DUMMY ;RSVD
VEC_DUMMY ;RSVD
VEC_DUMMY ;interrupt 4
VEC_DUMMY ;interrupt 5
VEC_DUMMY ;interrupt 6 VEC_DUMMY ;interrupt 7 VEC_DUMMY ;interrupt 8 VEC_DUMMY ;interrupt 9
VEC_DUMMY ;interrupt 10
VEC_DUMMY ;interrupt 11
VEC_DUMMY ;interrupt 12
VEC_DUMMY ;interrupt 13
VEC_DUMMY ;interrupt 14
VEC_ENTRY GPIO_ISR ;interrupt 15
.end
从这两个外设的中断向量表的配置来看,GPIO的中断和TIMER那不是在同一个地方了吗,这个中断向量表的配置依据的是什么规则啊,而且在定时器的那个配置中,是两个完全同名的ISR,一个是编号14的中断,一个是编号15的中断,看的很费解,假如我要把GPIO和定时器的中断同时用上,这个向量表又该如何配置呢
Nancy Wang:
同时使用GPIO和定时器的中断,映射到不同的中断号上就可以了。timer例程对应中断事件不同。gpCGEM_regs->INTMUX3 = (CSL_GEM_TINTLN<<CSL_CGEM_INTMUX3_INTSEL14_SHIFT) |(CSL_GEM_TINT8L<<CSL_CGEM_INTMUX3_INTSEL15_SHIFT)
可以查看手册TMS320C6678 System Event Inputs。
建议仔细看一下以下链接第六章节Interrupts部分的内容。www.ti.com/…/sprugh7.pdf这个文档也看一下。processors.wiki.ti.com/…/Configuring_Interrupts_on_Keystone_Devices
user18914063:
回复 Nancy Wang:
好的,非常感谢