当按下按钮从延长睡眠模式唤醒时,无法进入用户\应用\按钮\按下\ cb功能

⚠️
你好。。谢谢你来到论坛。令人兴奋的消息!我们现在正在迁移到新的论坛平台,该平台将提供更好的功能,并包含在主对话网站中。所有员额和帐户都已迁移。我们现在只接受新论坛的流量-请在//www.wsdof.com/support. 我们将在未来几天内修复bug/优化搜索和标记。
4个员额/0个新员额
最后一篇文章
李亚伦
离线
最后一次见到:7个月2天前
加入:2016-09-12 14:20
当按下按钮从延长睡眠模式唤醒时,无法进入用户\应用\按钮\按下\ cb功能

您好对话支持团队,
我为DA14580使用了SDK5.0.3和ble_app_profile.uvproj。我为播发设置了一个计时器。当这个计时器超时时,系统将从user_app_adv_timer_处理程序执行并进入睡眠模式。然后按下按钮将系统从睡眠模式唤醒。
我在用户\应用\按钮\按下\ cb函数中设置断点。但它总是不能进入这个功能和唤醒系统。我测试了唤醒按钮引脚上的电压从3V变为0V。虽然它总是无法触发按钮按下回拨功能。
你能给我一些建议吗?非常感谢您的帮助和支持!

int user_app_adv_timer_handler(ke_msg_id_t const msgid,
无效常量*参数,
KEU task\u id\u t const dest\u id,
ke_任务id_t常量src_id)
{

app_easy_gap_advertise_stop()//app_adv_stop();

清除计时器(应用程序高级计时器、任务应用程序);

拱门设置延长睡眠()//足弓设置深睡眠()//应用程序设置深度睡眠();

//禁用BLe和计时器事件的唤醒。只有外部(GPIO)唤醒事件才能唤醒处理器。
拱门可外接唤醒开启()//app_ble_ext_wakeup_on();

用户应用按钮启用();

返回(已消耗的热量);
}

作废用户\应用\按钮\启用(作废)
{

wkupct\注册\回调(用户\应用\按钮\按下\ cb);
如果(!GPIO_GetPinStatus(WKUP_端口,WKUP_引脚))
wkupct\U启用\U irq(wkupct\U引脚\U选择(WKUPU端口,WKUPU引脚),//选择引脚(GPIO\U按钮\U端口,GPIO\U按钮\U引脚)
WKUPCT_引脚_极性(WKUP_端口、WKUP_引脚、WKUPCT_引脚_极性_低),//极性低//WKUPCT_引脚_极性_高
1,//1事件
20); // 去抖动时间=0
}

作废GPIO_预订(作废)
{

#ifdef CFG_PRINTF_UART2
预留GPIO(UART2\U-TX、UART1\U-TX\U-GPIO\U端口、UART1\U-TX\U-GPIO\U引脚、PID\U-UART2\U-TX);
预留GPIO(UART2_RX、UART1_RX_GPIO_端口、UART1_RX_GPIO_引脚、PID_UART2_RX);
#恩迪夫

预留GPIO(WKUP\U GPIO、WKUP\U端口、WKUP\U引脚、PID\U GPIO);

}

void set\u pad\u函数(void)//设置gpio端口函数模式
{
#ifdef CFG_PRINTF_UART2
GPIO_配置引脚(UART1_TX_GPIO_端口,UART1_TX_GPIO_引脚,输出,PID_UART2_TX,错误);
GPIO_配置引脚(UART1_RX_GPIO_端口,UART1_RX_GPIO_引脚,输入,PID_UART2_RX,错误);
#恩迪夫

GPIO\U配置引脚(WKUP\U端口、WKUP\U引脚、输入\U上拉、PID\U GPIO、false);

}

#定义WKUP\U端口GPIO\U端口2
#定义WKUP_引脚GPIO_引脚_4

设备:
PM_对话框
离线
最后一次见到:6天10小时前
工作人员
加入:2018-02-08 11:03
你好,李亚伦,

你好,李亚伦,

我强烈建议你检查一下ble_应用程序_睡眠模式SDK的示例。此示例演示如何使用睡眠模式API并在运行时更改睡眠模式。设备在规定的时间内(APP_ADV_DATA_UPDATE_TO)进行广告,默认值为10秒。只要设备处于广告状态,其睡眠模式就会设置为深度睡眠。上述超时过期后,如果设备未进入连接状态,则停止播发。现在芯片什么也不做,等待外部事件退出休眠状态。你可以按一个按钮把它叫醒。按下按钮后,设备将在预定义的时间内再次开始播发。当它进入已连接状态时,睡眠模式变为延长睡眠。

有关此SDK示例的更多信息,请阅读8.50支柱5(睡眠模式)部分DA1458x软件开发人员指南9(UM-B-050)用户手册。如需下载,请访问我们的门户页面https://support.dialog-semiconductor.com/然后进入连接:蓝牙低能耗和802.15.4. 从顶部菜单栏中单击雷电竞官网登录然后选择DA14580. 在里面软件开发工具包窗口文件选项卡您将能够找到它。此外,您可以在以下SDK目录中找到此示例:项目\target\u apps\ble\u examples\ble\u app\u sleepmode\Keil\u 5\ble\u app\u sleepmode.uvprojx. 请尝试在SDK的ble_app_profile示例中执行类似的实现。

谢谢,下午好

李亚伦
离线
最后一次见到:7个月2天前
加入:2016-09-12 14:20
你好,下午好,

你好,下午好,
是的,我学习了ble_app_睡眠模式项目,并在ble_app_profile项目中进行了实现。我提供了相关的程序供您审阅。当我按下按钮时(电压水平从3V变为0V),我不知道为什么,但在执行用户应用按钮启用功能后,程序始终无法进入用户应用按钮按下cb功能。我检查了所有的可能性。但是没有找到原因。当我停止代码执行时,程序总是在arch_resume_from_sleep函数中停止。你可以参考附件。
所以我确实需要你的帮助和支持。你能帮我建议一下这个项目还需要做些什么吗?
非常感谢你的帮助!

顺致敬意,
李亚伦

附件:
李亚伦
离线
最后一次见到:7个月2天前
加入:2016-09-12 14:20
你好,下午好,

你好,下午好,
我在程序中发现了错误并解决了这个问题。你的建议很有帮助,也很专业!
非常感谢你的帮助!

顺致敬意,
李亚伦