Other Parts Discussed in Thread: CC2652R7
器件型号: CC2652R7
睡眠模式和唤醒问题
我目前正在使用 CC2652R7 开发一款产品。 我正在使用 SDK 版本 simplelink_cc13xx_cc26xx_sdk_8_32_00_07。
下面是我的 main() 函数:
int main()
{
/*注册应用程序回调到在堆栈中提出的陷阱断言*/
RegisterAssertBack(AssertHandler);
BOARD_INITGENERAL ();
PowerCC26X2_ResetReason resetReason = PowerCC26X2_getResetReason ();
if (resetReason == PowerCC26X2_RESET_SHUTDOWN_IO){
//按按钮唤醒系统;程序将正常运行。
}其他{
//其他情况(冷启动或手动复位)→进入待机模式并等待按下按钮唤醒
int i;
对于 (I=0;I<31;I++)
GPIO_setConfig (i、GPIO_CFG_INPUT | GPIO_CFG_IN_NOPULL);
GPIO_setConfig (6、GPIO_CFG_IN_PU | GPIO_CFG_IN_INT_FALLING);
GPIO_clearInt (6);
GPIO_enableInt (6);
//关闭
POWER_SHUTDOWN (0、0);
}
//启用 ICache 预取
VIMSConfigure (VIMS_BASE、TRUE、TRUE);
//启用缓存
VIMSModeSet (VIMS_BASE、VIMS_MODE_ENABLED);
#if ! defined( power_saving )
/*设置待机、断电和空闲模式的约束*/
// PowerCC26XX_SB_disallow 可能是冗余的
Power_setConstraint (PowerCC26XX_SB_disallow);
Power_setConstraint (PowerCC26XX_IDLE_PD_disallow);
#endif // power_saving
/*更新堆栈的用户配置*/
user0Cfg.appServiceInfo->timerTickPeriod = Clock_tickPeriod;
user0Cfg.appServiceInfo->timerMaxMillisecond = iCall_getMaxMSecs();
/*初始化 iCall 模块*/
iCall_init();
/*启动外部映像的任务 — 优先级 5 */
iCall_createRemoteTasks ();
#ifdef PTM_MODE
/*启动 NPI 任务的任务*/
NPITask_createTask (ICALL_SERVICE_CLASS_BLE);
#endif // PTM_MODE
MyApp_createTask();
SimplePeripheral_createTask();
/*启用中断并启动 SYS/BIOS */
bios_start();
返回 0;
}
我最初的目的是让系统在上电或复位后进入关断模式、然后等待按下按钮将其唤醒。 我将 1000000 上拉电阻器和按钮连接到 IO6;按下按钮将 IO6 接地。
现在的问题是、使用此配置时、IO6 无法唤醒程序。 我的代码是否有问题、正确的实现方法是什么?