啟用內部32K晶振,程序初始化什么的基本都是按照例程,開啟了休眠,RAM分區(qū)也分了,代碼放到后16K區(qū)了,RTC喚醒時間為默認值,定義了一個計時的全局變量,在藍牙連接狀態(tài)下,2s的周期任務能夠執(zhí)行,每次進入任務后就把該變量值加2,并把該值通過通知發(fā)出來,斷開藍牙休眠后,過一會兒重新連接藍牙,該全局變量又從0開始了。
請問需要怎么做才能讓變量在休眠喚醒后保持?
啟用內部32K晶振,程序初始化什么的基本都是按照例程,開啟了休眠,RAM分區(qū)也分了,代碼放到后16K區(qū)了,RTC喚醒時間為默認值,定義了一個計時的全局變量,在藍牙連接狀態(tài)下,2s的周期任務能夠執(zhí)行,每次進入任務后就把該變量值加2,并把該值通過通知發(fā)出來,斷開藍牙休眠后,過一會兒重新連接藍牙,該全局變量又從0開始了。
請問需要怎么做才能讓變量在休眠喚醒后保持?
宏定義了DEBUG,看到串口打印一直在不停復位,CH57x_BLE_LIB_V2.10打印藍牙協(xié)議棧信息和初始化完成信息,藍牙連上不會打印,斷開藍牙后就一直在復位
睡眠時可以選擇RAM的保存是否掉電,查看RAM的調用函數(shù)的參數(shù)。
Debug是串口打印用到的,如果刪除debug,將打印信息也刪除。
芯片在復位,是怎么連上藍牙的。
大佬看下,我這里睡眠的傳入?yún)?shù),RAM電源是打開的。? “查看RAM的調用函數(shù)的參數(shù)”??這個是什么意思?
任務是2s喚醒一次,喚醒了就系統(tǒng)初始化,串口會打印初始化信息,2s一次。你說藍牙能連接,喚醒后,藍牙連接上就不休眠了,所以能連接?
喚醒之后系統(tǒng)初始化,初始化就包含了變量的初始化的。如果需要某個值掉電保存,可以參考方式:
用的例程休眠,我打印RB_RESET_FLAG的值是5,為什么sleep模式變成下電模式了?你說的那個變量存到后16K絕對地址,前提是不復位,程序絕對是sleep,但是獲取標志是5,手冊上寫的是下電模式。廣播間隔1600就是有這樣的問題,改成80就能正常保存,但是功耗高,但是我希望廣播間隔長一些,功耗低一些,請問哪里配置不對嗎?
使用例程測試,如peripheral例程,查看是否出現(xiàn)復位情況。
標準的demo開啟睡眠(HAL_SLEEP=1),是不會出現(xiàn)復位的情況。
shutdown模式的喚醒會出現(xiàn)復位。
我用例程測過了,別的都不改,就把周期任務時間改成2s喚醒一次,廣播間隔時間只要大于500ms都是會復位的