用戶如何自己控制低功耗模式和藍牙開關(guān)配合問題

我想實現(xiàn)用戶自己控制低功耗-Shutdown模式(不是TMOS根據(jù)有無Event進行睡眠和RTC喚醒),藍牙關(guān)閉;然后RTC 5s后喚醒或者按鍵喚醒,藍牙開啟,調(diào)了一周了也沒有成功,請求幫助!

用戶自己控制低功耗shutdown模式可以參照我們PM的例程去進行修改,使用的是按鍵喚醒,如果需要rtc喚醒可參考此鏈接:

https://www.cnblogs.com/debugdabiaoge/p/15900477.html


您提供的資料我看了,是非ble的例程,現(xiàn)在我遇到的問題是開啟ble后如何實現(xiàn)RTC和按鍵喚醒,不是TMOS根據(jù)有無Event進行睡眠和RTC喚醒


既然你使用的不是藍牙協(xié)議棧自己調(diào)用的睡眠,那么將PM中關(guān)于shutdown和gpio喚醒的代碼移植到ble工程里就可以實現(xiàn)了,什么時候想要shutdown,那么調(diào)用PM中對應(yīng)的函數(shù)就可以進入,goip喚醒也是如此,關(guān)于rtc喚醒,鏈接中有舉例和說明。


移植后與TMOS_SystemProcess( )無法協(xié)調(diào)工作的。 在tmos休眠喚醒后,有什么函數(shù)能暫?;蜓訒r休眠?待處理完畢后再進入休眠。


無法協(xié)調(diào)工作的話就存在邏輯上設(shè)計的問題,tmos調(diào)用睡眠時會進一個lowpower函數(shù),在這個函數(shù)里去執(zhí)行睡眠,如果你不想睡,那么可以在里面置個flag來決定睡眠還是不睡眠。

emobile_2022-06-13_16-57-13.png




果然好用,多謝!

image.png

但有個問題,就是else的 返回值返0,還是3,對tmos運行有影響沒? 還有我加上flag后,恢復(fù)睡眠后廣播會中斷,還請指教!


如果覺得返回值會有影響,那么可以在這邊加判斷直接退出,目前測試恢復(fù)睡眠后仍可以搜到廣播,如果廣播不繼續(xù)了,那么可以重新使能下廣播試試

emobile_2022-06-13_18-03-11.png



我加完睡眠的標(biāo)志后,出現(xiàn)了2種現(xiàn)象:

? 1. 廣播正常,但連接一次后失敗,廣播停止。

? 2. tmos周期事件運行一分鐘左右會自動停止。按鍵后又會運行,廣播也會繼續(xù),但一分鐘左右又停止

image.png

這是按鍵喚醒后的代碼,幫我看看問題出現(xiàn)在哪呢?多謝!



tmos任務(wù)是禁止在中斷中調(diào)用的,另外就是wakeup_flag是否用volatile修飾。

使用579測試廣播正常,連接正常,通訊正常。



已解決,多謝!


藍牙睡眠的控制,除了在CH57X_LowPower()函數(shù)加標(biāo)志位以外,還有其它辦法沒?

這種方法運行例程的小點程序還可以,一旦程序復(fù)雜了,就總死機,很脆弱!

image.png


在藍牙代碼中去實現(xiàn)低功耗,目前使用這種方法是最好的,

不然的話就可以使用我們的tmos去執(zhí)行你的任務(wù),將你的任務(wù)竟可能拆分,然后拉大連接間隔去解決。


多謝解答!另外我問一下,ble的協(xié)議棧在ram中是否占了將近16K,如果再加上我的程序占用,超過了16K,而睡眠時,只保留了16K,把我程序多出來的丟失了,所以喚醒時就死機了! 有這種可能沒?


協(xié)議棧(BLE_MEMHEAP_SIZE)在ram中默認(rèn)占用了8k,這個是可以調(diào)整的,最低不要低于6k,如果自己占用的ram很大,超過了16k,又需要使用低功耗,那么建議使用ch582,睡眠保持ram32k。


多謝


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频