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

关于Clock_Struct,是调用底层的RTC吗?

Hi,各位TI大神,

我想实现芯片在无连接时,进入低功耗,有链接是正常工作。看了好久的RTC资料,还是迷迷糊糊,根本就没有找到关于RTC的注册IRQ函数。

但是,我在代码中发现Clock_Struct结构,于是想试试这个函数。

代码:

//注册定时器

Util_constructClock(&WakeUpClock,WakeUp_clockHandler,//SPPBLEServer_clockHandler, SBP_BROADCAST_PERIOD, 0, false, SBP_BROADCASE_EVT);

//定时器中断服务程序

static void WakeUp_clockHandler(UArg arg)
{
if((gapProfileState == GAPROLE_CONNECTED) || (gapProfileState == GAPROLE_CONNECTED_ADV))
{
Power_setPM();
}
else
{
Power_relPM(); }
Util_startClock(&WakeUpClock);
}

//进入standby,开启定时器

void AT_CmdSleep(char **ppBuf)

{
extern void Util_startClock(Clock_Struct *pClock);
extern Clock_Struct WakeUpClock;
Util_startClock(&WakeUpClock);

//AONRTCEventClear(AON_RTC_CH0);
//AONRTCCompareValueSet(AON_RTC_CH0, 32258);
//SysCtrlAonSync();
AT_SendEvent(eAT_E_SleepMode);

delay_ms(500);
// release constraints for Standby and idle mode
Power_releaseConstraint(Power_SB_DISALLOW);
Power_releaseConstraint(Power_IDLE_PD_DISALLOW);
Power_sleep(Power_STANDBY, NULL, 0);

}

请问:Clock_Struct 这个底层是调用RTC吗?

Frank Mei:

Hi ,

我最近发现很奇怪的现象。

void AT_CmdSleep(char **ppBuf){ extern void Util_startClock(Clock_Struct *pClock); extern Clock_Struct WakeUpClock; //Util_startClock(&WakeUpClock);

//AONRTCEventClear(AON_RTC_CH0); //AONRTCCompareValueSet(AON_RTC_CH0, 32258); //SysCtrlAonSync(); AT_SendEvent(eAT_E_SleepMode);

delay_ms(500); // release constraints for Standby and idle mode Power_releaseConstraint(Power_SB_DISALLOW); Power_releaseConstraint(Power_IDLE_PD_DISALLOW); Power_sleep(Power_STANDBY, NULL, 0);

}

执行这段代码进入standby模式,烧录完成一次后的第一次执行,电流可以到达10uA左右,BLE广播看不见了。(我认为这种状态才是真正的standby模式)

重新上电,再次执行这段代码,电流0.8mA,此时可以搜索到BLE的广播。

这大神帮我一下,这个standby怎么进入。

Yan:

回复 Frank Mei:

Frank Mei,

你代码里面BLE的广播是在哪里调用的?

在你想stand by之后?

赞(0)
未经允许不得转载:TI中文支持网 » 关于Clock_Struct,是调用底层的RTC吗?
分享到: 更多 (0)