CH573休眠喚醒后tmos不跑了.

創(chuàng)建了一個(gè)藍(lán)牙任務(wù) 和 一個(gè)功能任務(wù).

image.png



休眠等級(jí)是sleep.? 休眠喚醒為 上升沿.


image.png


喚醒后,? ? ?整個(gè)系統(tǒng)卡死, 無(wú)法運(yùn)行了.

image.png



如果在休眠前, 將藍(lán)牙斷開 ,關(guān)閉廣播.? 喚醒后,系統(tǒng)是正常運(yùn)行的..

image.png



正常運(yùn)行后,, 嘗試再次啟動(dòng)藍(lán)牙廣播. 系統(tǒng)再次卡死

image.png

工程使用了 固定LIB.? 0x50000位置 . APP工程編譯大小如下.

image.png



麻煩幫忙分析一下.


在藍(lán)牙程序中不要自己調(diào)用sleep,將HAL_SLEEP設(shè)置為TRUE,睡眠由協(xié)議??刂凭托小?/p>


tmos自己休眠的話, 只要有事件周期到了, 系統(tǒng)就會(huì)被喚醒, 我有好幾個(gè)周期只有10ms的任務(wù),功耗扛不住.

. 休眠前把事件全部停掉,只留一個(gè)長(zhǎng)周期的監(jiān)控喚醒事件,這樣可以降低功耗,但有點(diǎn)麻煩,功耗還是比手動(dòng)休眠的高.


產(chǎn)品在休眠的時(shí)候, 不需要藍(lán)牙功能.??

如果休眠前 不對(duì)藍(lán)牙進(jìn)行任何處理,休眠喚醒后,系統(tǒng)會(huì)卡死.

休眠前斷開藍(lán)牙鏈接,并且關(guān)閉藍(lán)牙廣播,喚醒后可以正常運(yùn)行, 一旦重新啟動(dòng)藍(lán)牙廣播, 系統(tǒng)依舊會(huì)卡死.

怎么解決這個(gè)情況呀.


不要在藍(lán)牙工程中自己調(diào)用睡眠函數(shù),

調(diào)用協(xié)議棧睡眠,只留一個(gè)周期長(zhǎng)的任務(wù)和直接調(diào)用睡眠的功耗相差不大的。


@TECH_Hy 你好,想問(wèn)一下,藍(lán)牙程序中將HAL_SLEEP設(shè)置為TRUE,睡眠由協(xié)議棧控制,我里面有兩個(gè)80和100ms用戶程序不斷在跑,這樣怎么處理好


您好,使能了HAL_SLEEP后,只需關(guān)心何時(shí)喚醒執(zhí)行事件即可;協(xié)議棧會(huì)根據(jù)當(dāng)前的TMOS事件安排情況,在需要執(zhí)行事件時(shí)喚醒MCU;協(xié)議棧判斷兩個(gè)事件之間的間隔大于預(yù)期(1ms),會(huì)自動(dòng)安排休眠。

配置循環(huán)事件的方式①調(diào)用一次tmos_set_event立即執(zhí)行一次事件,或調(diào)用tmos_start_task,在一定時(shí)長(zhǎng)后延遲執(zhí)行一次事件;事件處理函數(shù)(XXX_ProcessEvent)中,在事件邏輯執(zhí)行完畢,return(return (events ^ XXX))之前,再調(diào)用一次tmos_start_task,預(yù)先安排下一次調(diào)用該事件的時(shí)間點(diǎn)來(lái)形成循環(huán)。

方式②調(diào)用tmos_start_reload_task接口即可配置事件循環(huán);調(diào)用tmos_stop_task停止事件循環(huán)。


類似的問(wèn)題我之前也遇到過(guò),我覺得官方人員不是應(yīng)該建議使用HAL_SLEEP,而是應(yīng)該解決樓主所說(shuō)的喚醒后開啟廣播卡住的問(wèn)題,這似乎是協(xié)議棧內(nèi)部的處理存在未能預(yù)測(cè)的條件分支,因?yàn)閰f(xié)議棧不是開源的,所以工程師無(wú)法通過(guò)檢查協(xié)議棧實(shí)現(xiàn)代碼來(lái)測(cè)試程序。


雖然可以使用ida pro直接查看協(xié)議棧匯編代碼,但是這很顯然需要消耗很多精力來(lái)調(diào)試。即便是使用調(diào)試器調(diào)試,大量的代碼顯然也不如官方開發(fā)人員更為熟悉。


個(gè)人建議官方對(duì)協(xié)議棧進(jìn)行優(yōu)化處理。


對(duì)于樓主的問(wèn)題,我提供的建議是,如果在常規(guī)方式不能被解決的時(shí)候,可以考慮使用data flash緩存必要的數(shù)據(jù),然后直接執(zhí)行軟復(fù)位,然后讀取data flash進(jìn)行處理,空間充裕的前提下,可以使用多分區(qū)數(shù)據(jù)緩存,以實(shí)現(xiàn)磨損均衡?;蛟阪溄幽_本設(shè)置相應(yīng)的noinit,修改RAM范圍,使軟復(fù)位可以保留ram數(shù)據(jù)再進(jìn)行處理。


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

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