ch579蓝牙休眠后,变量无法保存问题

启用内部32K晶振,程序初始化什么的基本都是按照例程,开启了休眠,RAM分区也分了,代码放到后16K区了,RTC唤醒时间为默认值,定义了一个计时的全局变量,在蓝牙连接状态下,2s的周期任务能够执行,每次进入任务后就把该变量值加2,并把该值通过通知发出来,断开蓝牙休眠后,过一会儿重新连接蓝牙,该全局变量又从0开始了。

请问需要怎么做才能让变量在休眠唤醒后保持?

1723293622275998.png

1723293622211472.png1723293622766176.png

微信截图_20240810210421.png

宏定义了DEBUG,看到串口打印一直在不停复位,CH57x_BLE_LIB_V2.10打印蓝牙协议栈信息和初始化完成信息,蓝牙连上不会打印,断开蓝牙后就一直在复位


睡眠时可以选择RAM的保存是否掉电,查看RAM的调用函数的参数。

Debug是串口打印用到的,如果删除debug,将打印信息也删除。

芯片在复位,是怎么连上蓝牙的。


大佬看下,我这里睡眠的传入参数,RAM电源是打开的。  “查看RAM的调用函数的参数”  这个是什么意思?

1723452786990679.png


任务是2s唤醒一次,唤醒了就系统初始化,串口会打印初始化信息,2s一次。你说蓝牙能连接,唤醒后,蓝牙连接上就不休眠了,所以能连接?

1723452786932430.png



唤醒之后系统初始化,初始化就包含了变量的初始化的。如果需要某个值掉电保存,可以参考方式:

image.png



用的例程休眠,我打印RB_RESET_FLAG的值是5,为什么sleep模式变成下电模式了?你说的那个变量存到后16K绝对地址,前提是不复位,程序绝对是sleep,但是获取标志是5,手册上写的是下电模式。广播间隔1600就是有这样的问题,改成80就能正常保存,但是功耗高,但是我希望广播间隔长一些,功耗低一些,请问哪里配置不对吗?image.png


使用例程测试,如peripheral例程,查看是否出现复位情况。

标准的demo开启睡眠(HAL_SLEEP=1),是不会出现复位的情况。

shutdown模式的唤醒会出现复位。


我用例程测过了,别的都不改,就把周期任务时间改成2s唤醒一次,广播间隔时间只要大于500ms都是会复位的

image.png

image.png

image.png


只有登录才能回复,可以选择微信账号登录