stm32軟件系統(tǒng)從裸機升級為ucos
由于ucos系統(tǒng)很簡單(5000行),而且別人都做好了現(xiàn)成的stm32移植,我只是簡單的做上面的驅(qū)動和應用,我主要關注點是怎么利用ucos系統(tǒng)接口完成應用。
之所以升級到ucos版本,是因為原來的iic和SPI驅(qū)動由于要死等,導致應用層的任務被阻塞,而導致伺服周期不準,雖然用上了外部定時器中斷來觸發(fā)伺服任務,但是還是有不準的情況,所以對iic和SPI驅(qū)動改造,不再是死等,而是等的時候放棄CPU(OSTimeDly(1)),這樣,即使在運行過程中,也可以很方便的讀寫eeprom。
心得體會:
1)復雜多任務的情況下面,ucos有很大的優(yōu)勢,會提高實時性
2)任務間同步很方便,鎖可以方便的對全局資源進行排他占用,而且很好的防止優(yōu)先級反轉,信號量很好的作為通知手段,實時性很強,任務不用不斷循環(huán)查詢了。
3)棧空間的大小很難定義,由于任務的局部變量都是自棧上分配的,所以必須分配合理的空間,否則會任務溢出掛掉,由于stm32和ucos是針對小型系統(tǒng)做的,所以這個棧獨立也可以可以接受的,而且其實也簡單
4)ucos很簡單,我真正開始用,才1周時間,基本完成原來驅(qū)動和應用的移植
5)大系統(tǒng),建議上強大的CPU(支持MMU),強大的操作系統(tǒng)
評論