使用了peripheral和multiCentral例程修改的。休眠后可能会出现三种电流,100ua[正常的],2ma,20ma。不知道是代码哪里有问题,代码如下
///////////主机
//断开连接
uint8_t connItem; uint8_t bStatus;
for(connItem = 0; connItem < CENTRAL_MAX_CONNECTION; connItem++)
{
if(centralConnList[connItem].state == BLE_STATE_CONNECTED)
{
GAPRole_TerminateLink(centralConnList[connItem].connHandle);
}
}
//关闭扫描
bStatus=GAPRole_CentralCancelDiscovery();
tmos_stop_task(centralTaskId, START_READ_RSSI_EVT);
tmos_stop_task(centralTaskId, SBP_PERIODIC_EVT);//停止 定时数据检测
tmos_stop_task(centralTaskId, ESTABLISH_LINK_TIMEOUT_EVT);//连接超时
///////////从机
if(peripheralConnList.connHandle != GAP_CONNHANDLE_INIT)
{
GAPRole_TerminateLink(peripheralConnList.connHandle);//断连
}
//关闭广播
uint8 advertising_enable = FALSE;
GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8), &advertising_enable);//关闭广播
/////
tmos_stop_task(halTaskID, HAL_REG_INIT_EVENT); //默认2分钟一次的校准先暂停
tmos_stop_task( halTaskID, HAL_TEST_EVENT);//停止 任务
HAL_Sleep_UnInit();//关闭RTC唤醒中断
PWR_PeriphWakeUpCfg(ENABLE, RB_SLP_GPIO_WAKE, Long_Delay);//允许GPIO唤醒设备
//进入休眠
LowPower_Sleep(RB_PWR_RAM30K | RB_PWR_RAM2K); //只保留30+2K SRAM 供电 睡眠模式
========================
void HAL_Sleep_UnInit(void)
{
#if(defined(HAL_SLEEP)) && (HAL_SLEEP == TRUE)
sys_safe_access_enable();
R8_SLP_WAKE_CTRL &= ~RB_SLP_RTC_WAKE; // RTC不唤醒
sys_safe_access_disable(); //
sys_safe_access_enable();
R8_RTC_MODE_CTRL &= ~ RB_RTC_TRIG_EN; // 触发模式
sys_safe_access_disable(); //
PFIC_DisableIRQ(RTC_IRQn); //关闭中断
#endif
}
|