嗨,我做我自己的无代码项目,有一些问题关于EXT. Sleep模式
我从你的无编码项目(做得很好)实现功能,准备睡觉和醒来
我的问题是,我想把BLE放到下一个。睡眠与ATr+睡眠=1
它会在1小时内自动唤醒。
我发现了:
#define CFG_MAX_SLEEP_DURATION_PERIODIC_WAKEUP_MS 500 // 0.5s
和
#define CFG_MAX_SLEEP_DURATION_EXTERNAL_WAKEUP_MS 10000 // 10s
所以我想我应该把这个设为1h表示3600000对1h。
然后如果我发送命令ATr+SLEEP,它会休眠1h
但我应该删除一些额外的东西吗?
比如来自UART的中断,因为没有什么附加到它。BLE (PAN1740)是独立的。
wkupct_register_callback (user_wakeup);
//指定计数器IRQ的IO引脚、极性、事件计数和调试时间
wkupct_enable_irq
(
Wkupct_pin_select (uart2_rx_gpio_port, uart2_rx_gpio_pin), // uart rx
wkupct_pin_极性(UART2_RX_GPIO_PORT, UART2_RX_GPIO_PIN, wkupct_pin_极性低),//极性低
1, //事件的数量
0 // debuggingtime = 0ms
);
我应该删除wkupct_enable_irq吗?并且在自动唤醒后会调用user_wakeup吗?
设备:
嗨gert186,
我认为你误解了一些关于Codeless和580是如何操作的事情。CFG_MAX_SLEEP_DURATION_EXTERNAL_WAKEUP_MS #定义,确定设备的定期醒来,它的默认值是10秒,如果没有祝福事件设备将在睡眠模式最大的10秒就会醒来,回到immidiatelly睡觉。在Codeless的例子中,如果你停止广告并进入睡眠,你将能够看到该设备在10秒内周期性地醒来并再次进入睡眠(无论你是否具有外部唤醒功能),即使你在无代码的源代码中放置了1个小时,并且你希望看到设备广告,你也应该在设备醒来时执行一个开始广告功能,你不能通过命令来做到这一点。您必须附加代码,这些代码将在设备从周期性唤醒中醒来时执行。从外部事件中唤醒和BLE事件是不同的功能,您可以同时拥有这两个功能。所以为了在无代码中实现类似的东西,你必须在。app_on_ble_powered和。app_going_to_sleep函数中附加一些代码:
app_on_ble_powered附加以下函数,这样,当设备从定期醒来可以检查如果adv_on_wakeup(额外变量,将检查它是否应该开始广告)旗,app_on_ble_powered是一个回调,每次执行设备定期醒来:
arch_main_loop_callback_ret_t user_on_ble_powered(空白)
{
如果(adv_on_wakeup)
{
user_advertise ();
adv_on_wakeup = 0;
}
返回GOTO_SLEEP;
}
并在.app_going_to_sleep中附加下面的函数,以便在将要睡觉和不再发布广告时设置该标志。
空白user_on_going_to_sleep (sleep_mode_t睡眠)
{
如果(codeless_env。gap_activity = =闲置)
adv_on_wakeup = 1;
}
使用上述功能将使你进入永久睡眠,并开始广告,一旦周期性醒来发生。
关于定期唤醒的配置,请查看下面的票据,因为该机制出现了故障。
https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl..。
此外,如果你想要这种功能,我不确定无代码将是您的项目的适当基础,因为它是一个项目,允许您使用命令从UART接口编程设备。
由于MT_dialog
完美!谢谢