嗨,我做了我自己的无密码项目,关于EXT.Sleep模式有一些问题
我实现了你的无密码项目的功能(做得好)准备睡觉和起床
我的问题是我想用ATr+sleep=1将BLE放入ext.sleep
它会在1小时内自动醒来。
我发现:
#定义CFG\u最大睡眠时间\u周期性唤醒时间\u毫秒500//0.5s
和
#定义CFG\u最大睡眠时间\u外部唤醒时间\u毫秒10000//10秒
所以我想我应该把它设为1h,意思是1h的3600000。
然后如果我发送命令ATr+SLEEP,它将休眠1小时
但是我应该删除一些额外的东西吗?
就像UART的中断一样,因为它没有附加任何内容。BLE(PAN1740)是独立的。
wkupct_寄存器_回调(用户_唤醒);
//指定计数器IRQ的IO引脚、极性、事件计数和去抖动时间
wkupct\u启用\u irq
(
WKUPCT_引脚_选择(UART2_RX_GPIO_端口,UART2_RX_GPIO_引脚),//UART RX
WKUPCT_引脚_极性(UART2_RX_GPIO_端口、UART2_RX_GPIO_引脚、WKUPCT_引脚_极性_低),//极性低
1,//事件数
0//去抖动时间=0毫秒
);
我应该删除wkupct\u enable\u irq吗?自动唤醒后是否会调用用户_wakeup?
设备:
嗨,gert186,
我认为您误解了一些关于无代码和580如何运行的事情。CFG_MAX_SLEEP_DURATION_EXTERNAL_WAKEUP_MS是一个#定义,它将确定设备的定期唤醒,其默认值为10秒,因此如果没有不可恢复事件,设备将在睡眠模式下停留最长10秒,然后它将立即唤醒并返回睡眠状态。在无代码示例中,如果您只是停止广告并进入睡眠状态,您将能够看到设备在10秒内周期性地醒来并返回睡眠状态(您是否具有外部唤醒功能),即使您在codeless的源代码中放置了1个小时,并且希望看到设备广告,您也应该在设备唤醒后立即实现启动广告功能,您将无法通过命令执行该功能。您必须附加将在设备从周期性唤醒中唤醒时立即执行的代码。从外部事件和不可预知事件中醒来是两种不同的功能,您可以同时拥有这两种功能。因此,为了在无代码中实现类似的功能,您必须在.app\u on\u ble\u powered和.app\u going\u to\u sleep函数中附加一些代码:
将以下功能附加到app_on_ble_powered中,以便当设备从中定期唤醒时,可以检查是否设置了adv_on_wakeup(额外变量,用于检查是否应启动广告)标志,app_on_ble_powered是设备每次定期唤醒时执行的回调:
拱门、主回路、回叫、返回用户、上电(无效)
{
如果(自动唤醒)
{
用户_广告();
adv_on_wakeup=0;
}
返回GOTO_睡眠;
}
并在.app_going_to_sleep中附加以下函数,以便在进入睡眠状态时设置该标志,并且不再进行广告宣传。
无效用户正在进入睡眠(睡眠模式)
{
if(无代码环境间隙活动==空闲)
adv_on_wakeup=1;
}
使用上述功能将允许您进入永久睡眠状态,并在定期醒来后立即开始广告宣传。
关于配置定期唤醒,请查看下面的记录单,因为该机制存在故障。
https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl...
此外,如果您想要这种功能性,我不确定无代码将是您项目的合适基础,因为它是一个允许您使用UART接口的命令对设备进行编程的项目。
谢谢你的对话
完美的谢谢