TMOS實(shí)現(xiàn)長(zhǎng)延時(shí),并且不影響藍(lán)牙功能

WCH的這套TMOS系統(tǒng)確實(shí)有局限性,沒(méi)能做成搶占式的調(diào)度方式,文檔又說(shuō)明無(wú)法在中斷中實(shí)現(xiàn),尤其是調(diào)用第三方庫(kù)時(shí),遇上耗時(shí)的程序時(shí),只能改庫(kù)程序加入調(diào)度函數(shù),太影響程序架構(gòu)了,本來(lái)藍(lán)牙通訊應(yīng)該放到后臺(tái)管理,tmos這個(gè)系統(tǒng)偏偏給放到前臺(tái)來(lái)了,TMOS_SystemProcess()這個(gè)函數(shù)滿天飛。


看了樓主的代碼,這個(gè)最低優(yōu)先級(jí)中斷調(diào)用Tmos_SystemProcess的方法確實(shí)很巧妙,解決了主循環(huán)和耗時(shí)程序中調(diào)度藍(lán)牙程序的尷尬局面,不用添加調(diào)度函數(shù)了,程序架構(gòu)更完整了,不過(guò)有一點(diǎn)不是很明白,這個(gè)RTC的中斷周期在哪里設(shè)置,Tmos需要至少625us調(diào)度一次,在程序中沒(méi)發(fā)現(xiàn)設(shè)置RTC的中斷周期,還請(qǐng)樓主指點(diǎn)一下。


image.png

如上圖所示,RTC中斷周期是在這里設(shè)置的,RTC中斷設(shè)置的時(shí)間剛好是下次TMOS需要調(diào)用的時(shí)間。

也就是說(shuō)RTC中斷在TMOS不需要調(diào)用的時(shí)候是不會(huì)進(jìn)中斷的。


另外,附件的Demo使用的SDK比較老,可能會(huì)存在一些問(wèn)題。建議使用官方最新SDK修改。


大概理解了,是不是每次Tmos_SystemProcess()完成調(diào)度后,會(huì)調(diào)用CH58x_LowPower函數(shù),重新設(shè)置下次的RTC觸發(fā)時(shí)間并清中斷標(biāo)志位,等待下次RTC中斷,這個(gè)函數(shù)的time參數(shù)由Tmos根據(jù)調(diào)度周期自動(dòng)設(shè)置,是這個(gè)意思吧。之前有個(gè)項(xiàng)目就是刷屏和讀寫flash的耗時(shí)操作,為了保持藍(lán)牙連接,只能采用最笨的方法,在過(guò)程中隔幾行代碼就加入Tmos_SystemProcess()。


是的


有一個(gè)疑問(wèn)。我在藍(lán)牙初始化后不馬上廣播rtc中斷就沒(méi)在運(yùn)行了。您這邊有嘗試過(guò)嗎。我開啟廣播需要

?RTC_SetTignTime(RTC_GetCycle32k() + 10);

才會(huì)開始廣播


這樣的用法倒是不會(huì)導(dǎo)致藍(lán)牙無(wú)法使用,不過(guò)影響到藍(lán)牙建立連接的速度了,特別慢,很影響使用體驗(yàn),修改廣播間隔也不管用


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

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