EDMA传输完是有中断的,可是自己找不到在哪里,是根本看不到吗?
自己看了CCS中自带的关于EDMA的例程,在使用 EDMA3_DRV_requestChannel 函数时,第五个参数给了一个callback 函数的地址,callback函数如下:
/* Callback function 1 */
void callback1 (unsigned int tcc, EDMA3_RM_TccStatus status,void *appData)
{
(void)tcc;
(void)appData;
switch (status)
{
case EDMA3_RM_XFER_COMPLETE:
/* Transfer completed successfully */
irqRaised1 = 1;
break;
case EDMA3_RM_E_CC_DMA_EVT_MISS:
/* Transfer resulted in DMA event miss error. */
irqRaised1 = -1;
break;
case EDMA3_RM_E_CC_QDMA_EVT_MISS:
/* Transfer resulted in QDMA event miss error. */
irqRaised1 = -2;
break;
default:
break;
}
}
一下是 EDMA3_DRV_requestChannel 的声明
EDMA3_DRV_Result EDMA3_DRV_requestChannel (EDMA3_DRV_Handle hEdma, unsigned int *pLCh, unsigned int *pTcc, EDMA3_RM_EventQueue evtQueue, EDMA3_RM_TccCallback tccCb, void *cbData);
通过查询irqRaised1的值来判断传输是否完成(irqRaised1是个全局变量)。这个callback函数是怎么回事呢,自己没有找到哪里用的,中断内部会自己调用这个函数来更改值吗?只有这样来判断传输是否完成吗?
Andy Yin1:
你可以搜索一下这个函数,应该在一个地方会调用的。
hocodrecon:
回复 Andy Yin1:
没有搜到callback 函数在哪里调用的。