Part Number:CC2652R
参考SDK中的simple_peripheral中例程中其他定时器的创建方式同时创建了两个one-shot定时器(clockPeriod参数为0),其中一个定时5ms,另一个定时10000ms,并在SimplePeripheral_clockHandler中使用Util_startClock重新开启定时,参考SimplePeripheral_clockHandler中其他定时器方法。发现定时5ms的定时器在10000ms定时器执行之后便不会执行,即之后只会执行10000ms的定时器事件,并且10000ms定时器在第一次回调的时候执行了两次。
Util_constructClock(&ECGSampleTimer, SimplePeripheral_clockHandler,5, 0, true, (UArg)&ecgSample);Util_constructClock(&powerSampleTimer, SimplePeripheral_clockHandler,10000, 0, true, (UArg)&powerSample);
else if(pData->event == SP_ECG_SAMPLE_EVT) {//开启下一个定时5ms,好像有问题Util_startClock(&ECGSampleTimer);//传递事件到应用层SimplePeripheral_enqueueMsg(SP_ECG_SAMPLE_EVT, pData); } else if(pData->event == SP_POWER_SAMPLE_EVT){//开启下一个定时10000msUtil_startClock(&powerSampleTimer);//传递事件到应用层SimplePeripheral_enqueueMsg(SP_POWER_SAMPLE_EVT, pData);}
Kevin Qiu1:
是比较奇怪,one-shot只会执行一次,再此执行则需要重新开启
可能是其他地方影响了,你新建一个工程,单独测试一下定时器部分看看
,
Daoming Liu:
我回去试试,现在调试过程又发现定时器回调的时向回调函数传递的参数混乱了。我自定义的event(SP_POWER_SAMPLE_EVT)标志触发了app中默认的其他事件,很迷惑。switch写法确定是没有问题的。
,
Daoming Liu:
Clock_Struct定义定时器有数量限制吗?
,
Daoming Liu:
没有自己用ICall_malloc就不要往SimplePeripheral_enqueueMsg传入pData。
,
Kevin Qiu1:
感谢分享