您好:
我使用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,请问这是为什么?谢谢!
Thomas Yang1:
请检查 CSL_TMR_8的宏定义, 你也可以单步跟进CSL_tmrOpen中查看。
谢谢
si cheng:
回复 Thomas Yang1:
您好:
CSL_tmrOpen封装在库里面,看不到定义,CSL_TMR_8的宏定义就是8.表示定时器8.谢谢
Yu Liu:
回复 si cheng:
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;
}
Yu Liu:
回复 Yu Liu:
si cheng,
您好!
该问题计划在2.0.6的MCSDK中修正。预计时间是11年12月。