在edma中在用以下函数时
EDMA3_DRV_Result EDMA3_DRV_requestChannel (EDMA3_DRV_Handle hEdma,
uint32_t *pLCh,
uint32_t *pTcc,
EDMA3_RM_EventQueue evtQueue,
EDMA3_RM_TccCallback tccCb,
void *cbData);
第五个参数可以是一个回调函数,自己在使用的时候传输完成后并没有进入回调函数。
在使用timer的时候用以下函数
CSL_Status CSL_intcHookIsr (
CSL_IntcVectId vectId,
void *isrAddr
)
在第二个参数中也可以设置回调函数。
自己的timer程序在有些程序中能够在中断产生后调用回调函数函数,在有些程序中则不能。
我想问一下这是怎么回事,我因该如何去解决这个问题。
Andy Yin1:
需要查一下是否产生了中断,对于EDMA可以查一下相应channel配置对应的IPR bit是否置位。
hocodrecon:
回复 Andy Yin1:
EDMA的问题自己后来看了一个帖子知道是因为global interrupt enable 位是0,没有打开全局中断,对于timer,自己没有在IFR中看到有中断.
Zhan Xiang:
回复 hocodrecon:
1. 如果你使用了SYS BIOS的话, 中断管理应该由BIOS来处理,不建议直接调用CSL库。
2. 如果对应的IFR没有置位,需要检查下面几点:
A . 中断路由是否设置正确,有些timer的event需要通过cic二次路由
B . 对应外设的PSC是否使能,保证外设没有被软件关断
C. 对应的IER是否使能
D. interrupt mux寄存器配置是否正确。
hocodrecon:
回复 Zhan Xiang:
谢谢你的回答,自己接触DSP不久,有很多问题.我想再问一下
1.直接用CSL库会出现什么问题呢?
2.interrupt mux是在哪里看啊?
Andy Yin1:
回复 hocodrecon:
1 sysbios工程中不要使用INTC LIB,否则会有冲突错误,需要使用sysBios提供的config 界面进行中断事件与ISR的映射配置;
2 Interrupt mux寄存器配置参考C66x corepac user guide SPRUGW0B section9 interrupt controller INTMUX register。