最近参考对话框官方接入微信的例子:DA1458x_WECHAT_5.190.2,文档:嗯- b - 058 - cn DA1458x微信物联网软件开发套件v1.0。
程序已经可以正确跑起,但是在EXT_SLEEP模式下,程序有时会偶尔跑飞,而SLEEP_OFF模式下则不会。我追查其代码到arch_main文件中的主循环函数:main_func。这个函数下会根据睡眠模式不同,进入不同的代码分支,主要处理睡眠和唤醒。我在其进入睡眠的代码前添加闪灯程序进行调试,发现如果闪灯时间稍长,整个程序就会运行不起来,蓝牙也不工作了,这段代码应该对时间有着比较严格的要求,无论哪种模式,即使是SLEEP_OFF。后我将闪灯程序改的极短,可以看出整个大循环大致周期为1秒,即每秒就会被从睡眠模式下唤醒执行一遍。我又开始找唤醒源,找到了标题中列的中断处理函数:BLE_WAKEUP_LP_Handler。这个中断会定时被触发,从而唤醒睡眠,我在里面也添加了闪灯程序,闪灯的频率与大循环大致是一致的。我现在希望将这个中断函数的触发定时间隔设置加大,这样这个中断和大循环就会降频被触发,以便我的其他代码有足够的时间处理。因为这个中断和大循环,如果里面有代码执行时间稍长,整个程序就运行不正常了,所以这里面对时间应该有比较高的要求。而我的其他处理代码会有费时操作,比如i2c读取传感器等。
望大家给一些建议,谢谢!
设备:
一般在蓝牙连接状态下,每个间隔(取决于主建立连接的参数)都会进入睡眠。在函数rwip_sleep加一些条件,比如两个间隔才进睡眠。
感谢回复。但我现在想要的不是不进入休眠,那样功耗会高,而是希望每次睡眠的时间能长,即如何把间隔拉长,可否有建议吗?
您好,目前我也遇到了这样的问题,在main_func函数中我有一段初始化外设比较耗时,也造成了程序从睡眠中重新启动的时候跑飞了,请问您当时是怎么解决这个问题的?
主连接建立的间隔参数会有影响。
另外,我的意思就是并不是不让睡眠,原来每个锚点都会睡,但是如果在rwip_sleep查到你有别的动作,这个锚点我就不睡了,直到完成你的其他动作。