打印
[技术问答]

HC32F030_DDL_Rev1.3.1 dmac问题

[复制链接]
1291|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
codekill|  楼主 | 2022-5-6 02:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

本人有检查所使用sdk源码的习惯,想请诸位帮我确认一下sdk是否有问题?sdk是官网下载版本,如有新的,希望能告诉我。
1.赋值dma错误中断回调函数的条件错误(第一个函数)。
2.在调用回调时,错误中断中调用的是传输完成的中断(第二个函数)。


以下源码从dmac.c文件中复制,版本为HC32F030_DDL_Rev1.3.1


en_result_t Dma_ConfigIrq(en_dma_channel_t enCh,stc_dma_irq_sel_t* stcDmaIrqCfg,stc_dma_irq_calbakfn_pt_t* pstcDmaIrqCalbaks)
{
  ASSERT(IS_VALID_CH(enCh));

  if(!IS_VALID_CH(enCh))
  {
    return ErrorInvalidParameter;
  }
  if(DmaCh0 == enCh)
  {
    if (TRUE == stcDmaIrqCfg->TrnErrIrq)
    {  
      if (NULL != pstcDmaIrqCalbaks->pfnDma0TranferCompleteIrq)
        {
            stcDmaIrqCalbaks.pfnDma0TranferErrIrq = pstcDmaIrqCalbaks->pfnDma0TranferErrIrq;
        }
    }
    if (TRUE == stcDmaIrqCfg->TrnCpltIrq)
    {
        if (NULL != pstcDmaIrqCalbaks->pfnDma0TranferCompleteIrq)
        {
            stcDmaIrqCalbaks.pfnDma0TranferCompleteIrq = pstcDmaIrqCalbaks->pfnDma0TranferCompleteIrq;
        }
    }
  }
  else if(DmaCh1 == enCh)
  {
    if (TRUE == stcDmaIrqCfg->TrnErrIrq)
    {  
      if (NULL != pstcDmaIrqCalbaks->pfnDma1TranferCompleteIrq)
        {
            stcDmaIrqCalbaks.pfnDma1TranferErrIrq = pstcDmaIrqCalbaks->pfnDma1TranferErrIrq;
        }
    }
    if (TRUE == stcDmaIrqCfg->TrnCpltIrq)
    {
        if (NULL != pstcDmaIrqCalbaks->pfnDma1TranferCompleteIrq)
        {
            stcDmaIrqCalbaks.pfnDma1TranferCompleteIrq = pstcDmaIrqCalbaks->pfnDma1TranferCompleteIrq;
        }
    }   
  }else
  {}
  return Ok;
}


void Dma_IRQHandler(uint8_t u8Param)
{
    if((DmaAddOverflow == M0P_DMAC->CONFB0_f.STAT)||(DmaHALT == M0P_DMAC->CONFB0_f.STAT)||(DmaAccSCRErr == M0P_DMAC->CONFB0_f.STAT) ||(DmaAccDestErr == M0P_DMAC->CONFB0_f.STAT))
    {
        if (NULL != stcDmaIrqCalbaks.pfnDma0TranferErrIrq)
        {
            stcDmaIrqCalbaks.pfnDma0TranferCompleteIrq();
        }
        M0P_DMAC->CONFB0_f.STAT = 0u;
    }
    if((DmaAddOverflow == M0P_DMAC->CONFB1_f.STAT)||(DmaHALT == M0P_DMAC->CONFB1_f.STAT)||(DmaAccSCRErr == M0P_DMAC->CONFB1_f.STAT) ||(DmaAccDestErr == M0P_DMAC->CONFB1_f.STAT))
    {
        if (NULL != stcDmaIrqCalbaks.pfnDma1TranferErrIrq)
        {
            stcDmaIrqCalbaks.pfnDma1TranferCompleteIrq();
        }
        M0P_DMAC->CONFB1_f.STAT = 0u;
    }       
    if(DmaTransferComplete == M0P_DMAC->CONFB0_f.STAT)
    {
        if (NULL != stcDmaIrqCalbaks.pfnDma0TranferCompleteIrq)
        {
            stcDmaIrqCalbaks.pfnDma0TranferCompleteIrq();
        }
        M0P_DMAC->CONFB0_f.STAT = 0u;
    }
    if(DmaTransferComplete == M0P_DMAC->CONFB1_f.STAT)
    {
        if (NULL != stcDmaIrqCalbaks.pfnDma1TranferCompleteIrq)
        {
            stcDmaIrqCalbaks.pfnDma1TranferCompleteIrq();
        }
        M0P_DMAC->CONFB1_f.STAT = 0u;
    }       
                       
}



使用特权

评论回复
沙发
tpgf| | 2022-6-2 16:05 | 只看该作者
这个习惯的好处是什么呢

使用特权

评论回复
板凳
aoyi| | 2022-6-2 16:13 | 只看该作者
红色的是库函数吗

使用特权

评论回复
地板
nawu| | 2022-6-2 16:35 | 只看该作者
看不太懂这段代码

使用特权

评论回复
5
zljiu| | 2022-6-2 16:45 | 只看该作者
亲加一下注释可好

使用特权

评论回复
6
gwsan| | 2022-6-2 16:56 | 只看该作者
估计是最新版本了

使用特权

评论回复
7
tfqi| | 2022-6-2 17:15 | 只看该作者
为什么产生错误中断呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝