0x02 LiteOS_Lab倉庫組件詳解--Driver(上)
摘要:本貼詳解driver層,相信大家肯定有疑問,為啥我不說完AT層再說driver層?因為AT層就是通過調(diào)用driver層中的API來操作串口的,所以不得不在AT層的詳解中先把driver層說了。

編程的抽象思想
我們在接到一個客戶的需求時,幫客戶制作一份程序,大家有沒有想過“我能不能把這個客戶需要的代碼下次賣給其他客戶,節(jié)約自己的工作量”。要如何才能將剛剛我們提出的想法實現(xiàn)呢?這就需要通過編程抽象思想來實現(xiàn)。
比如說有兩位客戶,客戶①的需求:我要在8051內(nèi)核單片機上實現(xiàn)一個AT收發(fā)的框架;客戶②的需求:我要在stm32f103單片機上實現(xiàn)一個AT收發(fā)的框架。那么這是我們就可以運用代碼接口抽象化、模塊化、降低模塊與模塊間耦合的思想了,將這份代碼從下到上分為3層:
①串口層:用于初始化串口,將上層的數(shù)據(jù)通過串口發(fā)出。將收到的數(shù)據(jù)提供給串口,我們在更換不同類型的單片機只需要從新寫這一層。
②driver層:也就是驅(qū)動層,它提供讀、寫、初始化等等函數(shù)給上層模塊使用,上層模塊操作串口和操作內(nèi)存卡的感覺是一樣的,通過這層完全屏蔽了底層設(shè)備的差異,所有能進(jìn)行讀寫的設(shè)備都可以通過driver層注冊并提供讀、寫函數(shù)即可,在更換底層設(shè)備,例如將內(nèi)存卡換成u盤只要適配好內(nèi)存卡硬件層和u盤硬件層,其余均不用改動。
③AT層:AT指令大家都知道,語法為AT+命令=參數(shù)、AT+命令?等,我們實現(xiàn)好這一層,只要調(diào)用相應(yīng)函數(shù)并傳入命令和參數(shù)就可以使用了。
所以所上面兩位客戶的需求可以共用相同的AT層和driver層,只用分別添加uart硬件層即可,就算客戶后面改需求我們也不怕了,改硬件我們只需要修改硬件層(uart層)即可。
driver層中的結(jié)構(gòu)體
使用結(jié)構(gòu)體編程運用了面向?qū)ο蟮乃枷耄岩粋€設(shè)備想象成對象,他有自己的屬性和行為,屬性對應(yīng)各種變量(設(shè)備名、只讀、只寫等),行為對應(yīng)各種函數(shù)(初始化函數(shù)、讀函數(shù)、寫函數(shù)等)。
driver層自身初始化
設(shè)備注冊函數(shù)
設(shè)備注冊有兩種方式,一種是直接調(diào)用注冊函數(shù)注冊,另一種是調(diào)用宏定義讓設(shè)備的合適的時候自動注冊,先說第一種。
設(shè)備取消注冊函數(shù)
單片機 輕量級操作系統(tǒng) LiteOS
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。