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