This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6678 CSL_tmrOpen()问题

您好:

我使用C6678

C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_9_beta2\packages\ti\csl\example\timer

文件夹下的timer_test.c文件测试定时器,发现:如果我用函数

hTmr = CSL_tmrOpen(&TmrObj, IntcInstance, NULL, &status); 打开的定时器IntcInstance>=8时,打不开定时器,返回句柄为0, 如果IntcInstance < 8,打开正常. 使用的程序是timer_test.c的程序,只是将CSL_TMR_0改成了CSL_TMR_8,请问这是为什么?谢谢!

  • 请检查 CSL_TMR_8的宏定义, 你也可以单步跟进CSL_tmrOpen中查看。

    谢谢

  • 您好:

    CSL_tmrOpen封装在库里面,看不到定义,CSL_TMR_8的宏定义就是8.表示定时器8.谢谢

  • si cheng,

    您好!

    我按照Thomas讲在\packages\ti\csl\src下面找到了源码。可以试试新的MCSDK版本。

    下面的函数中确实有限制。对于C6670这个限制是对的,对于C6678这个限制是有问题的。我们会报告CSL的这个问题。

    谢谢!

    CSL_Status CSL_tmrGetBaseAddress

    (

       CSL_InstNum       tmrNum,

       CSL_TmrParam*          pTmrParam,

       CSL_TmrBaseAddress*    pBaseAddress

    )

    {

       CSL_Status st = CSL_SOK;

       pTmrParam = pTmrParam;

       if (pBaseAddress == NULL)

           return CSL_ESYS_INVPARAMS;

       switch (tmrNum) {

       case CSL_TMR_0:

           pBaseAddress->regs = (CSL_TmrRegsOvly)CSL_TIMER_0_REGS;

           break;

       case CSL_TMR_1:

           pBaseAddress->regs = (CSL_TmrRegsOvly)CSL_TIMER_1_REGS;

           break;

       case CSL_TMR_2:

           pBaseAddress->regs = (CSL_TmrRegsOvly)CSL_TIMER_2_REGS;

           break;

       case CSL_TMR_3:

           pBaseAddress->regs = (CSL_TmrRegsOvly)CSL_TIMER_3_REGS;

           break;

       case CSL_TMR_4:

           pBaseAddress->regs = (CSL_TmrRegsOvly)CSL_TIMER_4_REGS;

           break;

       case CSL_TMR_5:

           pBaseAddress->regs = (CSL_TmrRegsOvly)CSL_TIMER_5_REGS;

           break;

       case CSL_TMR_6:

           pBaseAddress->regs = (CSL_TmrRegsOvly)CSL_TIMER_6_REGS;

           break;

       case CSL_TMR_7:

           pBaseAddress->regs = (CSL_TmrRegsOvly)CSL_TIMER_7_REGS;

           break;                                

       default:

           pBaseAddress->regs = (CSL_TmrRegsOvly)NULL;

           st = CSL_ESYS_FAIL;

           break;

       }

       return st;

    }

  • si cheng,

    您好!

    TI确认这是一个CSL的BUG并且会在新发布的MCSDK中修正。短时间内可以自己修改源码参加编译。

    谢谢您帮助TI发现问题!

  • si cheng,

    您好!

    该问题计划在2.0.6的MCSDK中修正。预计时间是11年12月。