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.

[参考译文] RTOS/CC2650:通过两个唤醒 IO 关断

Guru**** 2540720 points
Other Parts Discussed in Thread: CC2650

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/570210/rtos-cc2650-shutdown-with-two-wake-ios

器件型号:CC2650

工具/软件:TI-RTOS

你好

我想将 CC2650置于具有两个唤醒 IO 的关断模式。

我实现了该代码

静态 PIN_Config ResetPinTable[]=
{
Board_QI_STATUS | PIN_INPUT_EN | PIN_NOPULL | PIN_IRQ_DIS、
BOARD_SELECT_ACCELERO_1 | PIN_INPUT_EN | PIN_NOPULL | PIN_IRQ_DIS、
PIN_TERMINATE
};


int main ()
{
PIN_init (BoardGpioInitTable);
H_GpioResetPin = PIN_OPEN (&pinResetGpioState、ResetPinTable);
PIN_registerIntCb (H_GpioResetPin、VD_APP_RESET_CALLBACK);
//...
SimpleBLEPeripheral_createTask ();
//...

PIN_setConfig (H_GpioResetPin、PINCC26XX_BM_IRQ、Board_SELECT_ACCELERO_1 | PINCC26XX_IRQ_NEGEDGE);
PIN_setConfig (H_GpioResetPin、PINCC26XX_BM_IRQ、 Board_QI_STATUS | PINCC26XX_IRQ_NEGEDGE | PINCC26XX_IRQ_POedge;

BIOS_start();

}

静态 void VD_APP_RESET_callback (PIN_Handle handle、PIN_ID pinId)
{
PIN_setOutputValue (H_GpioResetPin、Board_TP、0);

if (pinId = Board_QI_STATUS)
{
SysCtrlSystemReset();
}
if (pinId = Board_CHOOLE_ACCELERO_1)
{
PIN_setConfig (H_GpioResetPin、PINCC26XX_BM_WAKEUP、Board_CHOOSE_ACCELERO_1 | PINCC26XX_WAKEUP_NEGEDGE);
PIN_setConfig (H_GpioResetPin、PINCC26XX_BM_WAKEUP、Board_QI_STATUS | PINCC26XX_WAKEUP_NEGEDGE);

EVENT_POST (ChooseEvent、EVENT_ACCELERO);
}
//


任务中
//...
if (事件和 EVENT_ACCELERO)
{

/*转到 SHUTDOWN */
POWER_SHUTDOWN (NULL、0);

/*不应出现在此处,因为关机将重置。 *
while (1);
}


GPIO 用于关断。
再次复位 cc2650。

当 cc2650处于关断状态时、两个 GPIO 可将其唤醒。

但问题是、我在 Board_QI_STATUS 上唤醒不起作用。

如果我将唤醒置于 Board_QI_STATUS 上 、它会起作用。 如果我将唤醒置于 Board_SELECK_ACCELERO_1中、它可以正常工作、但不能同时工作。

您是否知道是否可以在上升沿和下降沿唤醒?

谢谢  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    不幸的是、我不理解您在上面发帖;您能否详细阐述一下您要做什么? 根据用于唤醒器件的 I/O、您似乎需要不同的行为... 对吗?

    此致、
    伊曼纽尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好

    是的

    我认为我的觉醒不是很好。

    我希望能够在两个 IO 上唤醒、但它不起作用。  

    两个不同的 IO 唤醒了我们。 ?  如果是,我的错误是什么?

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好

    我仍然坚持这个问题。
    我提前说过、我认为当我使用两个唤醒源时。 我的来源上有一个逻辑与。
    而我需要逻辑或。 我想被 GPIO 或其他 GPIO 唤醒。
    可以帮帮我吗?

    谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    很抱歉耽误你的回答。  

    关断时、任何(配置的)引脚都可以唤醒器件;但是、不会调用该引脚的寄存回调。  当器件被唤醒时、它不知道唤醒它的源是什么;相反、它会立即重新启动(它不会从关断状态恢复并继续执行)。  重新启动后,可以使用 SysCtrlResetSourceGet () driverlib API 来确定关机的原因。

    请告诉我这是否有帮助、

    伊曼纽尔