|
前幾天調(diào)試了一下DS18B20的程序,起初系統(tǒng)在裸奔的時(shí)候DS18B20可以很正常的讀取數(shù)據(jù)。由于項(xiàng)目前期設(shè)計(jì)時(shí)添加了ucos實(shí)時(shí)操作系統(tǒng)。原以為把裸奔的程序移植過(guò)來(lái)就可以使用。結(jié)果悲劇發(fā)生了……如果做過(guò)這方面的朋友一定知道。添加后,你會(huì)發(fā)現(xiàn)系統(tǒng)不跑了,徹底的死掉了。原因在何處?經(jīng)過(guò)一整天的查找,發(fā)現(xiàn)原來(lái)系統(tǒng)的時(shí)間片被占用了。導(dǎo)致ucos的ticks出現(xiàn)異常。
解決辦法:一種方法是:修改OS_CPU_SysTickInit(void)函數(shù),與delay函數(shù)進(jìn)行兼容。在溫度傳感器延時(shí)的時(shí)候不影響操作系統(tǒng)的tick運(yùn)行。這樣就可以解決問(wèn)題了。
還有一種方法就是,把18B20的延時(shí)定時(shí)器更換成TIM3或者是其他定時(shí)器。和系統(tǒng)的tick分開(kāi)。即可解決。
|
評(píng)分
-
查看全部評(píng)分
|