關(guān)于CH579 BLE庫(kù)的問題

使用測(cè)試了一段時(shí)間CH579這個(gè)芯片,發(fā)現(xiàn)功能真的很強(qiáng)大,再上個(gè)RTthread內(nèi)核,開發(fā)起來(lái)簡(jiǎn)直舒服,但是運(yùn)行中發(fā)現(xiàn)一個(gè)問題,就是要兼顧TMOS自身的事件機(jī)制,因?yàn)門MOS和藍(lán)牙協(xié)議棧是不開源的,所以就沒辦法將實(shí)時(shí)內(nèi)核的事件機(jī)制和TMOS本身融合起來(lái),導(dǎo)致必須有一個(gè)線程一直調(diào)用TMOS_SystemProcess()函數(shù),并且不能加延時(shí),加了延時(shí)后就會(huì)導(dǎo)致藍(lán)牙無(wú)法連接,這樣就只能將所有的任務(wù)運(yùn)行在同優(yōu)先級(jí)時(shí)間片調(diào)度模式下,然后還得保證其他任務(wù)的時(shí)間片盡可能的短,因?yàn)闊o(wú)法得知TMOS本身處理消息需要的實(shí)時(shí)性,但是實(shí)際情況是大多是事件TMOS內(nèi)核都是在空運(yùn)行,只有藍(lán)牙事件來(lái)了才會(huì)處理,導(dǎo)致大量的處理器時(shí)間被浪費(fèi)。

所以可不可以請(qǐng)WCH團(tuán)隊(duì)開放一個(gè)TMOS內(nèi)核的消息機(jī)制的回調(diào)接口,可以通過這個(gè)接口觸發(fā)一個(gè)其他內(nèi)核的消息機(jī)制去啟動(dòng)TMOS_SystemProcess(),這樣就可以用一個(gè)高優(yōu)先級(jí)線程和消息來(lái)釋放出空閑處理能力同時(shí)也能保證TMOS內(nèi)核的實(shí)時(shí)性。如果不試用第三方內(nèi)核可以直接在回調(diào)接口中調(diào)用TMOS_SystemProcess()函數(shù),保證無(wú)實(shí)時(shí)內(nèi)核情況下的版本兼容性

想要實(shí)現(xiàn)空閑的時(shí)候也可以去處理一些事件,可以添加宏定義HAL_SLEEP=TRUE,打開睡眠,在沒有任務(wù)的時(shí)候會(huì)調(diào)用這個(gè)函數(shù)CH57X_LowPower( u32 time ),這個(gè)函數(shù)的輸入?yún)?shù)time是下一個(gè)喚醒時(shí)刻的時(shí)間點(diǎn),在這個(gè)時(shí)間點(diǎn)之前你可以去執(zhí)行自己的代碼。


感謝感謝,這個(gè)方法好,我剛測(cè)試了下完全可行,目前測(cè)試結(jié)果好像確實(shí)比我之前用的時(shí)間片輪轉(zhuǎn)連接要穩(wěn)定,之前不定時(shí)就會(huì)斷連接。有個(gè)小問題,就是WAKE_UP_RTC_MAX_TIME這個(gè)參數(shù)寫的是時(shí)鐘穩(wěn)定時(shí)間,是不是就是系統(tǒng)如果小于這個(gè)時(shí)間就不進(jìn)入這個(gè)sleep函數(shù)呢?我現(xiàn)在不執(zhí)行低功耗模式,也就不存在時(shí)鐘穩(wěn)定時(shí)間,我是不是可以把這個(gè)參數(shù)設(shè)置為0?原本設(shè)置的是45,這個(gè)45也夠一個(gè)1ms延時(shí)了,能輪轉(zhuǎn)一些其他任務(wù)去了j_0059.gif


j_0070.gif原來(lái)中心設(shè)備設(shè)置這個(gè)低功耗不起作用的么,不會(huì)僅低功耗函數(shù)啊~~


如果你不想做低功耗,直接不睡就行了,那個(gè)參數(shù)也就沒必要改了,處理好自己想處理的事情后,直接return退出去,如果你處理事情的時(shí)間比較長(zhǎng),就需要去查rtc中斷標(biāo)志,產(chǎn)生中斷退出去就行,中心設(shè)備也是可以低功耗的啊,你添加全局宏試試。


嗯,設(shè)備端我就是按照你說(shuō)的這個(gè)說(shuō)法做的,把參數(shù)傳進(jìn)來(lái)的參數(shù)轉(zhuǎn)換成時(shí)間然后掛起線程,讓出處理器處理其他事物,非常好用,但是中心設(shè)備就不行了,打開sleep宏后,掃描時(shí)不會(huì)進(jìn)入sleep回調(diào)函數(shù),只有在與設(shè)備建立連接時(shí)會(huì)進(jìn)入一下,然后就再也不進(jìn)了,是我哪里沒配置對(duì)還是中心設(shè)備的機(jī)制就是這樣的


后來(lái)解決了嗎?我也是用rtthread也想用藍(lán)牙,非常不穩(wěn)定,


你在使用藍(lán)牙不穩(wěn)定,可能是任務(wù)發(fā)生了阻塞,導(dǎo)致了藍(lán)牙本身的任務(wù)得不到及時(shí)處理而出現(xiàn)斷開的現(xiàn)象。

基于此,上述已經(jīng)給出了答案。你如果想要處理自己的任務(wù),可以開啟宏定義HAL_SLEEP = 1,然后在CH57X_LowPower函數(shù)里處理自己的事情,處理完之后return退出就可以。

上述所提到主機(jī)只進(jìn)入一次低功耗的函數(shù),我們進(jìn)行嘗試是沒問題,主從連接成功之后是持續(xù)進(jìn)入的。這里你檢查一下供電,建議使用USB進(jìn)行供電。這里的參數(shù)也進(jìn)行一下修改。

1.png


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

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