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

定时器裸跑程序 无法进入中断处理函数

仿照\quickStartOMAPL1x_rCSL\里的TIMER_interrupt_dspL138例程写了一个简单的定时器闪烁灯程序,

除了在中断处理里做的事情不一样,其他配置几乎一样,

但仿真来看,跳转不到中断程序里,可以确定定时器已经跑起来了,定时器的中断标志也有pending,CPU的4号中断线标志位也pending了,

不知道是不是中断向量表有问题,但我已经尽量仿照例程来了,

请帮忙解答一下,

这是我的asm文件,

.global intcVectorTable
.global _c_int00
.global timer_isr

;******************************************************************************
;* VEC_ENTRY: Macro that instantiates one entry in the interrupt service table.
;******************************************************************************
VEC_ENTRY .macro addr
STW B0,*–B15
MVKL addr,B0
MVKH addr,B0
B B0
LDW *B15++,B0
NOP 2
NOP
NOP
.endm

;******************************************************************************
;* vec_dummy: Dummy interrupt service routine used to initialize the IST.
;******************************************************************************
_vec_dummy:
B B3
NOP 5

;***************************************************************************************
;* Map interrupt service table (IST) to corresponding interrupt service routines (ISR)
;***************************************************************************************
.sect ".vecs"
.align 1024

intcVectorTable:
_vector0: VEC_ENTRY _c_int00 ;RESET
_vector1: VEC_ENTRY _vec_dummy ;NMI
_vector2: VEC_ENTRY _vec_dummy ;RSVD
_vector3: VEC_ENTRY _vec_dummy ;RSVD
_vector4: VEC_ENTRY timer_isr ;DSP Maskable INT4 :
_vector5: VEC_ENTRY _vec_dummy ;DSP Maskable INT5 : Empty
_vector6: VEC_ENTRY _vec_dummy ;DSP Maskable INT6 : 
_vector7: VEC_ENTRY _vec_dummy ;DSP Maskable INT7 : Empty
_vector8: VEC_ENTRY _vec_dummy ;DSP Maskable INT8 : Empty
_vector9: VEC_ENTRY _vec_dummy ;DSP Maskable INT9 : Empty
_vector10: VEC_ENTRY _vec_dummy ;DSP Maskable INT10: Empty
_vector11: VEC_ENTRY _vec_dummy ;DSP Maskable INT11: Empty
_vector12: VEC_ENTRY _vec_dummy ;DSP Maskable INT12: Empty
_vector13: VEC_ENTRY _vec_dummy ;DSP Maskable INT13: Empty
_vector14: VEC_ENTRY _vec_dummy ;DSP Maskable INT14: Empty
_vector15: VEC_ENTRY _vec_dummy ;DSP Maskable INT15: Empty

这是我的main文件,

extern void intcVectorTable(void);

int main(void)
{

// Map timer system interrupts to DSP INT4
(*((volatile unsigned int*)0x01800104)) &= ~0x7F;
(*((volatile unsigned int*)0x01800104)) |= (25 << 0);  //TIM2的中断号是25,挂载到4号中断线上

// Assign the address of the IST to the IST pointer
ISTP = (unsigned int)intcVectorTable;

// Clear all CPU maskable interrupts
ICR = 0xFFF0;

IER |= (1 << 1) // Enable NMI interrupts
|(1 << 4) // Enable INT4 interrupts
;

gpio_init();  //配置管脚,GP6P12

c67x_timer_init(2,200);  //配置并启动定时器TIM2,定时时长200ms
while(1);

return 0;
}

interrupt void timer_isr(void)
{
DSP_GPIO_OUT_TOGGLE(GP6,GP6P12);   // 在中断函数中反转管脚电平
}

Shine:

TIMER_interrupt_dspL138例程能跑吗?如果只修改该了timer_isr里的代码,至少不会影响进入中断子程序。

user4878210:

回复 Shine:

TIMER_interrupt_dspL138例程可以跑,但是编译工具链版本必须降到7.4那个版本,如果用8.2.2来编译就会编译出错,我自己这个写的例程也是一样,工具链版本是7.4就可以跑了,但是我一定得要用8.2.2来编译怎么办,就是跑不起来

Shine:

回复 user4878210:

编译报什么错?自己的例程也是基于7.4那个版本的TIMER_interrupt_dspL138基础上改的?

赞(0)
未经允许不得转载:TI中文支持网 » 定时器裸跑程序 无法进入中断处理函数
分享到: 更多 (0)