完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
您好! 我想利用定时器0计数中断并将其设置为INT4 。以下是中断的初始化函数:
void int_interupt () [ CSR&=0xfffe;//disable global interrupt INTmux1=0x3604;//映射GPIO_BANK4 interrupt to INT4 asm(" NOP 2"); ISTP=0x80000000;//将中断向量表首地址发送给ISTP的ISTB 位 asm(" NOP 2"); ICR=0xfff0;//clear all the interrupt flag asm(" NOP 2"); IER=0x0033;//enable INT4 ] 现在的问题是 我在软件仿真(simulator)中可以进入中断,单步执行可以切入中断服务子程序中,但是用XDS100V2 仿真时就无法进入中断子函数,求教??? |
|
相关推荐
11 个讨论
|
|
vuywsdfwf 发表于 2018-8-1 08:11 这些都没有问题,硬件仿真时寄存器IF 已经为1。 已INTCTLSTAT.PRDINTEN12经设置为enable ,并且INTCTLSTAT.PRDINTSTAT12 也已经为1。 我的思路是这样的:我设置了全局变量flag=1,在中断子程序中 令flag=0,在主程序中while(flag)等待定时器中断 ; 可是程序就一直卡在这里。 我在软件仿真的情况下,按setp into 能够进入中断服务子程序中,但跳出来后程序还是卡在while(flag) 那里。 在硬件仿真时,按setp into 也没有显示进入中断函数(是不是硬件仿真时直接跳过的不显示 但是 是执行过的)因为我看到IF 寄存器从1置成0 了。 您帮我看看CMD 文件和vectors.asm 文件是否有问题? CMD -stack 0x00001000 /* Stack Size */ -heap 0x00001000 /* Heap Size */ MEMORY [ VECS: o = 0x80000000 l = 0x00000f00 DSPL2RAM: o = 0x00800800 l = 0x00040000 DSPL1PRAM: o = 0x00E00000 l = 0x00008000 DSPL1DRAM: o = 0x00F00000 l = 0x00008000 DSPL2RAM2: o = 0x11800000 l = 0x0003FFFF DSPL1PRAM2: o = 0x11E00000 l = 0x00008000 DSPL1DRAM2: o = 0x11F00000 l = 0x00008000 SHAREDRAM: o = 0x80000f00 l = 0x0001ffff SDRAM: o = 0xC0000000 l = 0x20000000 ] SECTIONS [ ".vectors" > VECS .bss > DSPL2RAM .cinit > DSPL2RAM .cio > DSPL2RAM .const > DSPL2RAM .stack > DSPL2RAM .sysmem > DSPL2RAM .text > DSPL2RAM .switch > DSPL2RAM .far > DSPL2RAM .calcbuffer > DSPL2RAM .compxbuf > DSPL2RAM .bufs > SHAREDRAM .buffer > SDRAM .buffertemp > SDRAM .compxbuffer> SDRAM ] 这个CMD 程序把程序都放在SHARERAM中运行, 我想问问这样有问题吗? (根据物理地址查看datasheet 知道 上面 CMD 的DSPL2RAM 也是在shareram 的空间内); vectors.asm .global _vectors .global _c_int00 .global _T64P0_TINT12_ISR .ref _c_int00 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: B B3 NOP 5 .sect ".vectors" .align 1024 _vectors: _vector0: VEC_ENTRY _c_int00 ;RESET _vector1: VEC_ENTRY _vec_dummy ;NMI _vector2: VEC_ENTRY _vec_dummy ;RSVD _vector3: VEC_ENTRY _vec_dummy _vector4: VEC_ENTRY _T64P0_TINT12_ISR _vector5: VEC_ENTRY _vec_dummy _vector6: VEC_ENTRY _vec_dummy _vector7: VEC_ENTRY _vec_dummy _vector8: VEC_ENTRY _vec_dummy _vector9: VEC_ENTRY _vec_dummy _vector10: VEC_ENTRY _vec_dummy _vector11: VEC_ENTRY _vec_dummy _vector12: VEC_ENTRY _vec_dummy _vector13: VEC_ENTRY _vec_dummy _vector14: VEC_ENTRY _vec_dummy _vector15: VEC_ENTRY _vec_dummy 谢谢!! |
|
|
|
|
|
|
|
cmh14 发表于 2018-8-1 08:30 程序可以放在shared RAM运行。 你在_vector4: VEC_ENTRY _T64P0_TINT12_ISR处设断点,看能否停在该处。 |
|
|
|
|
|
|
|
vuywsdfwf 发表于 2018-8-1 08:43 按您所说 我在中断向量程序中加了断点 硬件仿真是可以进入中断的,只是仿真时跳过了没有显示。谢谢您的回答。 现在还有1个问题: void main() [.... ..... runtime=1; while(runtime); .... .... ] interrupt void T64P0_TINT12_ISR() [ CSR&= 0xfffe; // 关中断 GIE=0 asm(" NOP 2 "); ICR = 0xFFF0; // 清除中断标志ICR TIMER0_INTCLSTAT=0x3;//clear time interrupt flag CLK_HIGH; asm(" NOP 2 "); CLK_LOW; asm(" NOP 1 "); CSR=CSR|0x1; // 开中断 runtime=0; ] runtime 在中断程序 运行后 我添加了watch 窗口观察了runtime 的值已经变为0了,为什么程序还是卡在while(runtime) 处,点击step into 就会的跳入定时器中断中程序中, 如此反复下去。 |
|
|
|
|
|
|
|
|
mian 和中断子函数是放在一个文件里的。 对,我想实现这个功能。等待定时器中断完成后再继续执行下面的程序,所以设置了while(runtime)循环等待。但实际情况是,在执行完中断程序返回主函数后 还是一直卡在while(runtime) 语句那,runtime 在 中断子程序里已经被赋值为0了,为什么还会一直卡在while(runtime)那?求教。 还有用DSP/BIOS 进行TSK 的配置 执行 是不是更好一些? |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
553 浏览 0 评论
1616 浏览 0 评论
2049 浏览 0 评论
为啥BQ7693003DBTR芯片在和BQ769X0盒子通讯时收不到信号?
1516 浏览 0 评论
DSP 28027F 开发板 XDS100v2调试探针诊断日志显示了 Error -150 (SC_ERR_FTDI_FAIL)如何解决
1342 浏览 0 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
1759浏览 29评论
2786浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
1726浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
1637浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
1647浏览 13评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-3 01:23 , Processed in 1.025933 second(s), Total 71, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2118