TI中文支持网
TI专业的中文技术问题搜集分享网站

util定时器在standby模式下能进入事件吗

芯片:CC2640R2F

工程:simplecentral

设定了一个util定时器,但是没有按照预期的进入事件,请问在standby模式下util时钟能否触发,是否无法唤醒呢。

我从现象看,好像是没有触发

YiKai Chen:

照理來說應該可以觸發的,你把你的util定时器程序貼上來看看

z z46:

回复 YiKai Chen:

我的程序:


#define SC_EVT_OPEN_SCAN 0x0B

#define SC_SCAN_PERIOD 8000

// Clock instance for scan events.static Clock_Struct clkScanOpen;

Util_constructClock(&clkScanOpen, SimpleCentral_clockHandler,SC_SCAN_PERIOD, 0, false, SC_EVT_OPEN_SCAN);.....Util_startClock(&clkScanOpen);...void SimpleCentral_clockHandler(UArg arg)
{uint8_t evtId = (uint8_t) (arg & 0xFF);switch (evtId){case SC_EVT_READ_RSSI:SimpleCentral_enqueueMsg(SC_EVT_READ_RSSI, (uint8_t) (arg >> 8) , NULL);break;case SC_EVT_READ_RPA:// Restart timerUtil_startClock(&clkRpaRead);// Let the application handle the eventSimpleCentral_enqueueMsg(SC_EVT_READ_RPA, 0, NULL);break;case SC_EVT_OPEN_SCAN:GapScan_enable(scanPeriod, scanDuration, 0);SC_Log_info0("clock Handler SC_EVT_OPEN_SCAN");break;default:break;}
}

我在打印扫描结果的地方开启时钟并关闭扫描,然后等待时钟触发,再重新打开扫描。

麻烦帮忙看下代码有什么问题,谢谢大神

Viki Shi:

可以的, 参考下 util.c中的代码

YiKai Chen:

回复 z z46:

你參考一下 SBC_RSSI_READ_EVT的作法然後在SimpleCentral_processAppMsg加上自己的event case

z z46:

回复 YiKai Chen:

我找到原因了,与util无关,是因为在处理util event的case中打开了扫描,请问这样的操作有问题吗?

...
case SC_EVT_OPEN_SCAN:GapScan_enable(scanPeriod, scanDuration, 0);SC_Log_info0("clock Handler SC_EVT_OPEN_SCAN");break;
...

只要注释掉GapScan_enable这句代码就行了

我的设计意图:利于simplecentral例程做一个仅扫描广播的程序,如果接收到了期待的数据包,则关闭此次扫描(节省电量),若没有收到则一直扫描到设定的duration。因此在扫描到期待数据的情况下,我需要手动关闭扫描(GapScan_disable),并开启定时器,在定时器触发后,开启扫描。

请问我这种实现方式有问题吗?

YiKai Chen:

回复 z z46:

要打開掃描應該是用 GAPCentralRole_StartDiscovery吧

z z46:

回复 YiKai Chen:

不是啊大神,我用的2.2版本的SDK,都没有见过你说的这个函数

YiKai Chen:

回复 z z46:

你芯片用的是CC2640還是CC2640R2F?

z z46:

回复 YiKai Chen:

CC2640R2F

YiKai Chen:

回复 z z46:

CC2640R2F最新的sdk是2.30.00.28,你是用這個版本嗎?

赞(0)
未经允许不得转载:TI中文支持网 » util定时器在standby模式下能进入事件吗
分享到: 更多 (0)