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

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.wsdof.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
4个职位/ 0个新职位
最后发表
李亚伦
离线
最后看到:7个月3天前
加入:2016-09-12 20分
当按下按钮从延长睡眠模式唤醒时,无法进入用户\应用\按钮\按下\ cb功能

Hello Dialog支持团队,
我使用了SDK5.0.3和ble_app_profile。uvproj DA14580。我设置了一个广告计时器。当这个定时器超时时,系统将perfrom user_app_adv_timer_handler并进入睡眠模式。然后按下按钮将系统从睡眠模式中唤醒。
我在user_app_button_press_cb函数中设置了断点。但是它总是不能进入这个功能并唤醒系统。我测试了唤醒按钮引脚的电压从3V到0V的变化。而它总是不能触发按钮按下回调功能。
你能给我一些建议吗?非常感谢您的帮助和支持!

Int user_app_adv_timer_handler(ke_msg_id_t const msgid,
空白const *参数,
ke_task_id_t const dest_id,
ke_task_id_t const src_id)

app_easy_gap_advertise_stop (); / / app_adv_stop ();

ke_timer_clear (APP_ADV_TIMER TASK_APP);

arch_set_extended_sleep (); / / arch_set_deep_sleep (); / / app_set_deep_sleep ();

//禁用BLe和timer事件的唤醒。只有外部(GPIO)唤醒事件才能唤醒处理器。
arch_ble_ext_wakeup_on (); / / app_ble_ext_wakeup_on ();

user_app_button_enable ();

返回(KE_MSG_CONSUMED);

空白user_app_button_enable(空白)

wkupct_register_callback (user_app_button_press_cb);
如果(!GPIO_GetPinStatus (WKUP_PORT WKUP_PIN))
WKUPCT_PIN_SELECT(WKUP_PORT, WKUP_PIN), //选择pin (GPIO_BUTTON_PORT, GPIO_BUTTON_PIN)
wkupct_pin_极性(WKUP_PORT, WKUP_PIN, WKUPCT_PIN_POLARITY_LOW), //极性低// WKUPCT_PIN_POLARITY_HIGH
1, // 1事件
20); // 去抖动时间=0

空白GPIO_reservations(空白)

#ifdef CFG_PRINTF_UART2
Reserve_gpio (uart2_tx, uart1_tx_gpio_port, uart1_tx_gpio_pin, pid_uart2_tx);
Reserve_gpio (uart2_rx, uart1_rx_gpio_port, uart1_rx_gpio_pin, pid_uart2_rx);
# endif

Reserve_gpio (wkup_gpio, wkup_port, wkup_pin, pid_gpio);

Void set_pad_functions(Void) //设置gpio端口函数模式

#ifdef CFG_PRINTF_UART2
GPIO_ConfigurePin(UART1_TX_GPIO_PORT, UART1_TX_GPIO_PIN, OUTPUT, PID_UART2_TX, false);
GPIO_ConfigurePin(UART1_RX_GPIO_PORT, UART1_RX_GPIO_PIN, INPUT, PID_UART2_RX, false);
# endif

GPIO_ConfigurePin(WKUP_PORT, WKUP_PIN, INPUT_PULLUP, PID_GPIO, false);

#定义WKUP\U端口GPIO\U端口2
#定义WKUP_PIN GPIO_PIN_4

设备:
PM_Dialog
离线
最后看到:12小时7分钟前
工作人员
加入:2018-02-08 11:03
嗨,亚伦,

嗨,亚伦,

我强烈建议你去看看ble_app_sleepmodeSDK示例。这个例子演示了如何使用休眠模式API并在运行时更改休眠模式。设备发布一个定义的时间(APP_ADV_DATA_UPDATE_TO),默认值是10秒。只要设备处于广告状态,它的睡眠模式就被设置为深度睡眠。超过上述超时时间后,如果设备仍未进入连接状态,则停止发布。现在芯片什么也不做,等待外部事件退出休眠状态。你按一个按钮就可以唤醒它。按下按钮后,设备将开始在预定的时间内再次发布广告。当它进入连接状态时,睡眠模式就会变为延长睡眠。

要获得关于这个SDK示例的更多信息,请阅读8.50第五支柱(睡眠模式)部分的DA1458x软件开发指南9 (UM-B-050)用户手册。如需下载,请访问我们的门户页面https://support.dialog-semiconductor.com/然后进入连接:蓝牙低能耗和802.15.4.从顶部的菜单栏单击到雷电竞官网登录然后选择DA14580.在软件开发工具包之窗文档TAB你就可以找到它。同样,你可以在以下SDK目录中找到这个例子:项目\ target_apps \ ble_examples \ ble_app_sleepmode \ Keil_5 \ ble_app_sleepmode.uvprojx. 请尝试在SDK的ble_app_profile示例中执行类似的实现。

谢谢,PM_Dialog

李亚伦
离线
最后看到:7个月3天前
加入:2016-09-12 20分
你好,下午对话框,

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

顺致敬意,
李亚伦

附件:
李亚伦
离线
最后看到:7个月3天前
加入:2016-09-12 20分
你好,下午对话框,

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

顺致敬意,
李亚伦