开发板:CC2650
配置了两个外部中断BTN1,BTN2用来唤醒设备,系统进入shutdown模式后,使用按键唤醒,请问程序中如何知道是哪个外部中断唤醒设备的?
Kevin Qiu1:
你用的是例程pinShutdown吗,例程中BTN1是唤醒,BTN2是进入shutdown模式
user6142675:
回复 Kevin Qiu1:
不是这个例程,单独写的,在程序中延时一段时间后,进入shutdown模式,另外程序设置了BTN1和BTN2都为唤醒按键,我想知道程序中如何判断是按下哪个按键设备唤醒的?
// Wake-up Button pin table PIN_Config ButtonTableWakeUp[] = {Board_BUTTON0 | PIN_INPUT_EN | PIN_PULLUP | PINCC26XX_WAKEUP_NEGEDGE | PIN_IRQ_NEGEDGE,Board_BUTTON1 | PIN_INPUT_EN | PIN_PULLUP | PINCC26XX_WAKEUP_NEGEDGE | PIN_IRQ_NEGEDGE,PIN_TERMINATE/* Terminate list */ };
Kevin Qiu1:
回复 user6142675:
这样应该是两个BUTTON都可以唤醒,只要检测到下降沿就会唤醒,程序中不会判断具体是哪个按键
user6142675:
回复 Kevin Qiu1:
我的需求是要检测在shutdown下由由不同外部中断唤醒做不同的事情,所以需要知道哪个外部中断唤醒的,请问这个需求怎么实现呢?
user6142675:
回复 Kevin Qiu1:
确认下,你的意思是处理器从shutdown模式被唤醒后,不支持判断是由哪个外部中断唤醒吗?
Kevin Qiu1:
回复 user6142675:
是的,使用这个API是这样的/** @brief Configure wakeup (from shutdown) on pins**@param aPinCfg #PIN_Config list identifying pin ID and relevant pin*configuration as one of:*- #PINCC26XX_NO_WAKEUP(default)*- #PINCC26XX_WAKEUP_POSEDGE*- #PINCC26XX_WAKEUP_NEGEDGE*@return #PIN_SUCCESS if successful, else error code**@par Usage*@code*PIN_setWakeup(NULL, PIN_ID(9)|PIN_WAKEUP_NEGEDGE);*Power_shutdown(0, 0);*@endcode**@note A wake-up event to wake up from shutdown is not detected until*the device reaches shutdown. Wake-up events happening after a shutdown*is initiated but before actual shutdown are not captured and thus will*not cause the device to wake up.*/ extern PIN_Status PINCC26XX_setWakeup(const PIN_Config aPinCfg[]);
user6142675:
回复 Kevin Qiu1:
我的系统需要极低的功耗,我原本想用shutdown模式来实现,发生不同的外部中断唤醒执行不同的功能程序,然后shutdown,以达到低功耗。
现在shutdown达不到目的,可以请教下我这个需求TI有推荐的方法吗?
Kevin Qiu1:
回复 user6142675:
你可以看看表格中各个模式的唤醒方式
另外simple_peripheral例程中自动打开了POWER_SAVING,无广播时自动进入休眠模式
user6142675:
回复 Kevin Qiu1:
1. 您的意思是使用这个例程的时候,这里已经设置了低功耗,不用再自行配置了?
2. 另外,如果我不使用蓝牙,如下所示,这个省电还是起作用的吧?
//SimpleBLEPeripheral_createTask();APP_createTask(); // 自定义任务