嗨,我做我自己的无密码项目,有一些关于外部睡眠模式的问题
我实现了你的无密码项目的功能(做得好)准备睡觉和醒来
我的问题是我想用ATr+sleep=1将BLE放入ext.sleep
它会在1小时内自动醒来。
我找到了:
#定义CFG\u MAX\u SLEEP\u DURATION\u PERIODIC\u WAKEUP\u MS 500//0.5s
以及
#定义CFG\u MAX\u SLEEP\u DURATION\u EXTERNAL\u WAKEUP\u MS 10000//10秒
所以我想我应该把这个设为1小时,意思是1小时3600000。
如果我发送命令ATr+SLEEP,它会休眠1小时
但是我应该去掉一些额外的东西吗?
就像来自UART的中断,因为它没有附加任何东西。BLE(PAN1740)是独立的。
wkupct\u register\u callback(用户\u唤醒);
//为计数器IRQ指定IO引脚、极性、事件计数和去抖动时间
wkupct\启用\ irq
(
WKUPCT\u PIN\u SELECT(UART2\u RX\u GPIO\u PORT,UART2\u RX\u GPIO\u PIN),//UART RX
WKUPCT\引脚\极性(UART2\ RX\ GPIO\端口、UART2\ RX\ GPIO\引脚、WKUPCT\引脚\极性\低)、//极性低
1,//事件数
0//去抖动时间=0ms
);
我应该删除wkupct\u enable\u irq吗?用户_wakeup会在自动唤醒后被调用吗?
设备:
你好,gert186,
我认为你误解了一些关于无代码和580如何工作的事情。CFGŧMAXŧu SLEEPŧDURATIONŧu EXTERNALŧWAKEUPŧMS是一个ŧ定义,它将确定设备的定期唤醒,其默认值为10秒,因此如果没有不可恢复事件,设备将在睡眠模式下保持最长10秒,然后它将立即唤醒并返回睡眠状态。在无代码示例中,如果您停止广告并进入睡眠状态,您将能够看到设备在10秒内周期性地醒来并返回睡眠状态(您是否具有外部唤醒功能),即使你在无代码源代码中放置1小时,并且你想看到设备广告,你也应该在设备一醒来就实现启动广告功能,你不能通过命令来实现。您将必须附加代码,这些代码将在设备从周期性唤醒中唤醒后立即执行。从外部事件中醒来和从不可预知的事件中醒来是两种不同的功能,你可以同时拥有这两种功能。因此,为了在无代码环境中实现类似的功能,您必须在.app\u on \u ble\u powered和.app\u going \u to \u sleep函数中附加一些代码:
在app\u on \u ble \u powered中附加以下函数,以便当设备从中唤醒时,可以定期检查adv\u on \u wakeup(额外变量,用于检查是否应开始广告)标志是否已设置,app\u on \u ble \u powered是一个回调,每次设备定期唤醒时都会执行该回调:
arch\u main\u loop\u callback\u ret\t user\u on \u ble\u powered(void)上的arch\u main\u loop\u callback\u ret\t user\u
{
如果(adv\ U on\ U wakeup)
{
用户_advised();
adv\ U on\ U wakeup=0;
}
回到睡眠状态;
}
并在.app\u going\u to\u sleep中附加以下函数,以便在进入睡眠状态时设置该标志,并且您不再做广告。
无效用户进入睡眠(睡眠模式)
{
if(无代码\u env.gap \u activity==空闲)
adv\ U on\ U wakeup=1;
}
使用上述功能可以让您进入永久睡眠状态,并在定期醒来后立即开始发布广告。
关于配置定期唤醒,请看下面的问题单,因为该机制存在故障。
https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl...
另外,如果你想这样的功能,我不确定无代码将是您的项目的适当基础,因为它是一个项目,允许您使用UART接口的命令编程设备。
谢谢你的对话
很 完美!谢谢