在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 汽車電子 > 設(shè)計(jì)應(yīng)用 > 基于代碼生成的車身網(wǎng)絡(luò)電控系統(tǒng)設(shè)計(jì)

            基于代碼生成的車身網(wǎng)絡(luò)電控系統(tǒng)設(shè)計(jì)

            作者: 時(shí)間:2010-12-09 來(lái)源:網(wǎng)絡(luò) 收藏


            LIN從機(jī)節(jié)點(diǎn)使用Freescale公司8位單片機(jī)MC9S08DZ60作為主控芯片,使用其SCI模塊連接LIN收發(fā)器TJAl020,再連接其他外圍執(zhí)行器組成。LIN從機(jī)節(jié)點(diǎn)功能框圖如圖3所示。


            2.2 軟件建模
            目前,大多數(shù)單片機(jī)所支持的軟件編譯器均以C語(yǔ)言為主,而在C語(yǔ)言中沒(méi)有類及繼承等相關(guān)概念,同時(shí)出于可移植性的考慮,軟件模型采用分層思想。將整個(gè)設(shè)計(jì)的軟件結(jié)構(gòu)分為4層:第0層為類型定義及中斷服務(wù)程序返回值的宏定義,第1層為單片機(jī)及其內(nèi)部功能模塊類的抽象,第2層為外圍硬件類的抽象,第3層為各個(gè)節(jié)點(diǎn)類的抽象。上層的類通過(guò)調(diào)用下層類提供的函數(shù)實(shí)現(xiàn)特定功能,各層的依賴關(guān)系如圖4所示。其中,虛線表示調(diào)用關(guān)系。下面具體介紹第1~3層的建模方法。


            2.2.1 第1層一單片機(jī)及其內(nèi)部功能模塊類的抽象
            第1層的函數(shù)功能通過(guò)對(duì)單片機(jī)寄存器的讀寫(xiě)實(shí)現(xiàn),故使用類的成員函數(shù),將寄存器的讀寫(xiě)代碼直接寫(xiě)在成員函數(shù)Behavior屬性的Ini-tial框中。如使能S12中的MSCAN模塊的代碼如下:
            CANCTL1(MSCANx)|=CANCTlLl_CANE_MASK;
            其中的CANCTL1是為了便于對(duì)多個(gè)MSCAN模塊做統(tǒng)一處理,以及便于選擇使用某個(gè)特定模塊而手動(dòng)編寫(xiě)的函數(shù)宏。在使用時(shí)只需將MSCANx賦值為相應(yīng)的整數(shù)值(對(duì)于MC9S12XSl28,可以是O~4)。
            2.2.2 第2層一外圍硬件類的抽象
            第2層需要調(diào)用第1層類的操作,這可以通過(guò)活動(dòng)圖實(shí)現(xiàn)。在活動(dòng)圖中,新建一個(gè)Action,根據(jù)需要選擇CallOperation(調(diào)用成員函數(shù))或Call Behavior(調(diào)用活動(dòng)圖的行為),再指定具體調(diào)用哪個(gè)成員函數(shù)或行為即可(調(diào)用的參數(shù)通過(guò)Action的Arguments屬性傳遞)。最后,將各個(gè)Action按照程序流程連接起來(lái)。
            這里,使用CAN協(xié)議(上層協(xié)議使用J1939)發(fā)送一個(gè)數(shù)據(jù)幀(活動(dòng)圖略——編者注)。為了能夠?qū)崿F(xiàn)行為圖(包括活動(dòng)圖)的,必須將所有的行為圖及其元素都放在某個(gè)類中?;顒?dòng)圖經(jīng)過(guò)轉(zhuǎn)換后生成的代碼如下所示:

            2.2.3 第3層一各個(gè)節(jié)點(diǎn)類的抽象
            除了同樣需要調(diào)用第1層、第2層類的操作之外,第3層還需要對(duì)中斷服務(wù)程序(ISR)進(jìn)行建模。ISR的建模涉及兩個(gè)問(wèn)題:ISR的返回值和ISR的定位。
            (1)ISR的返回值問(wèn)題。CodeWarrior支持兩種ISR的聲明方式。一種是使用預(yù)編譯指令pragma定義一個(gè)TRAP_PROC符號(hào),TRAP_PROC會(huì)提示編譯器下面的函數(shù)是ISR,編譯器會(huì)使用一個(gè)特殊的中斷返回指令來(lái)結(jié)束這個(gè)函數(shù)(一般是RTI指令)。此方法需要同時(shí)修改CodeWarrior工程中的PRM文件,將ISR與中斷向量表中的向量聯(lián)系起來(lái),不便于使用UML建模。
            另一種是使用與C51類似的interrupt關(guān)鍵字,并指定相應(yīng)的中斷向量號(hào),這樣就同時(shí)完成了ISR的聲明和與中斷向量表的關(guān)聯(lián)。在EA中修改類的模板,添加一個(gè)衍型(stereotype)并命名為define,并添加相應(yīng)的模板代碼。其核心部分代碼如下:

            修改完成后,在建模過(guò)程中只需將類的衍型設(shè)置為define,將類名設(shè)置為新定義的符號(hào),類的父類設(shè)置為原符號(hào)即可。以CANO模塊的接收中斷的返回值為例,可將類名設(shè)置為ISR_CAN0_RX,將父類設(shè)置為interrupt 38void(此父類并不存在)。最后生成的代碼如下:
            #define ISR_CAN0_RX interrupt 38 void
            然后將ISR的返回值指定為ISR_CANO_RX即可。



            評(píng)論


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

            關(guān)閉