新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > stm32上移植了ucos,現(xiàn)在需要使用到DS18B20采集溫度

stm32上移植了ucos,現(xiàn)在需要使用到DS18B20采集溫度

作者: 時(shí)間:2016-11-21 來(lái)源:網(wǎng)絡(luò) 收藏
DS18B20的操作時(shí)序要使用到延時(shí),我是用ucos的延時(shí)函數(shù)還是自己循環(huán)寫(xiě)一個(gè)延時(shí)?
現(xiàn)在有個(gè)問(wèn)題:假如用ucos的延時(shí)函數(shù),如果出現(xiàn)更高優(yōu)先級(jí)的任務(wù),那么會(huì)將讀DS18B20這個(gè)任務(wù)掛起,會(huì)破壞DS18B20的時(shí)序操作,讀不出來(lái)溫度。這個(gè)延時(shí)我應(yīng)該怎么處理?
分享到:
2012-08-14 08:40提問(wèn)者采納
第一 讀取18B20的時(shí)候關(guān)閉任務(wù)切換,不進(jìn)行任務(wù)調(diào)度第二 通過(guò)任務(wù)通訊 互斥量或者郵箱 讓其他任務(wù)掛起第三 關(guān)閉中斷第四 將操作18b20的任務(wù)優(yōu)先級(jí)設(shè)置高點(diǎn)或者操作時(shí)提升其任務(wù)優(yōu)先級(jí)延時(shí)的話可以用ucos的延時(shí)函數(shù) 也可以自己寫(xiě),不過(guò)還是用ucos的好
追問(wèn)
謝謝你的回答請(qǐng)問(wèn)這是四種方法嗎???如果是,覺(jué)得第一種方法好點(diǎn),至于第四種,感覺(jué)沒(méi)用,又回到我原來(lái)的問(wèn)題上了,提升18B20的優(yōu)先級(jí),哪怕是最高的優(yōu)先級(jí),只要使用ucos的延時(shí),那么會(huì)去尋找第二高的優(yōu)先級(jí),并且執(zhí)行,還是會(huì)破壞延時(shí)。另外一個(gè)問(wèn)題,ucos使用的時(shí)鐘節(jié)拍是由STM32內(nèi)部的時(shí)鐘滴答定時(shí)器產(chǎn)生的,我設(shè)置的是1ms中斷一次,是不是每次一中斷就會(huì)去尋找優(yōu)先級(jí)最高的任務(wù),并且執(zhí)行呢?
回答
ucos每次都會(huì)讓處于就緒態(tài)的最高優(yōu)先級(jí)任務(wù)運(yùn)行,用ucos的延時(shí), 18b20這個(gè)任務(wù)被掛起,并且記錄延時(shí)節(jié)拍數(shù),節(jié)拍數(shù)在系統(tǒng)時(shí)鐘中斷中不停的減,一旦檢測(cè)到延遲節(jié)拍數(shù)為0就會(huì)查看是不是需要進(jìn)行任務(wù)調(diào)度,18B20的任務(wù)得以重新運(yùn)行。
提問(wèn)者評(píng)價(jià)
謝謝



關(guān)鍵詞: stm32移植ucosDS18B20采集溫

評(píng)論


技術(shù)專區(qū)

關(guān)閉