This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2640R2F: 开启POWER_SAVING,按键无法唤醒,去掉POWER_SAVING,则可以正常相应按键。

Part Number: CC2640R2F

开启POWER_SAVING,按键无法唤醒,去掉POWER_SAVING,则可以正常相应按键。

代码:

// 按键IO配置
static PIN_Config s_keyPinsCfg[] =
{
    IOID_3 | PIN_GPIO_OUTPUT_DIS | PIN_INPUT_EN | PIN_PULLUP,
    PIN_TERMINATE
};

// 按键IO状态结构体
static PIN_State s_keyPins;

// 按键IO句柄结构体
static PIN_Handle s_hKeyPins;

    // 初始化按键的IO
    s_hKeyPins = PIN_open(&s_keyPins, s_keyPinsCfg);
    // 注册回调函数
    PIN_registerIntCb(s_hKeyPins, board_keyCallback);

    // 修改成双沿中断触发,以避免睡眠之后中断不灵
    PIN_setConfig(s_hKeyPins, PIN_BM_IRQ, IOID_3 | PIN_IRQ_BOTHEDGES);     // PIN_IRQ_NEGEDGE

    // 低功耗下的配置
#ifdef POWER_SAVING
    PIN_setConfig(s_hKeyPins, PINCC26XX_BM_WAKEUP, IOID_3 | PINCC26XX_WAKEUP_NEGEDGE);
#endif // POWER_SAVING

正常会取 回调函数,打开一个定时器,LED会亮。

一旦开启POWER_SAVING,则无反应。在线仿真又正常的。

去掉POWER_SAVING,也是正常的。

请教下,会是什么原因呢?

另外,电路没有外部32.768KHZ晶振,使用的内部晶振。会有影响吗?

  • 您好,根据您提供的代码和描述,开启POWER_SAVING后按键无法唤醒系统,去掉POWER_SAVING后可以正常响应按键。这可能是因为在POWER_SAVING模式下,系统进入了低功耗模式,以减少功耗,但同时也禁用了一些硬件模块,包括GPIO中断。因此,按键即使被按下,也无法触发中断来唤醒系统。

    您可以尝试在配置GPIO时设置它的唤醒源。在您的代码中,唤醒源为负边沿,这意味着只有当GPIO从高电平到低电平时才会唤醒系统。如果按键被按下并保持低电平,系统将不会被唤醒。因此,建议您将唤醒源更改为上升沿 PINCC26XX_WAKEUP_POSEDGE