在自動(dòng)生成代碼時(shí),Simulink模型里的兩類(lèi)數(shù)據(jù)是我們需要考慮的:信號(hào)(signal)和參數(shù)(parameter)。信號(hào)對(duì)應(yīng)于Simulink模塊連線,仿真時(shí)一般都會(huì)變化;而參數(shù)則對(duì)應(yīng)于雙擊模塊時(shí)所設(shè)置的變量,仿真時(shí)一般保持不變。
如何控制這些變量在生成的代碼里的實(shí)現(xiàn)?
點(diǎn)擊末尾的 “閱讀原文” 下載本文的案例模型
信號(hào)和參數(shù)的聲明和定義
要得到:
模型參數(shù)p1定義為:int32 p1 = 3;extern int32 p1
模型信號(hào)mySig定義為:int16 mySig;extern int16 mySig
怎么做:用Data Object。
實(shí)例二
1. 建一個(gè)簡(jiǎn)單的Simulink模型

2. 代碼生成基本配置
求解器:定步長(zhǎng)—離散求解器
系統(tǒng)目標(biāo)文件:ert.tlc
3. 新建數(shù)據(jù)對(duì)象
打開(kāi)Model Explorer,點(diǎn)擊菜單的Add,在base workspace里定義參數(shù)數(shù)據(jù)對(duì)象p1,進(jìn)行如圖設(shè)置:

這樣在生成代碼的時(shí)候,參數(shù)p1就會(huì)定義為int32的數(shù)據(jù)類(lèi)型,并且聲明為extern。而且它的聲明和定義代碼會(huì)分別寫(xiě)入myHdr.h以及mySrc.c。
類(lèi)似的,新建一個(gè) Simulink.Signal,命名為 mySig,設(shè)置如圖。它的定義和聲明就會(huì)默認(rèn)的在模型名.c和模型名.h里 :

4. 信號(hào)關(guān)聯(lián)
在信號(hào)線上右鍵,將信號(hào)與Base Workspace的數(shù)據(jù)對(duì)象關(guān)聯(lián)在一起。

參數(shù)k不需要手動(dòng)關(guān)聯(lián)。
5. 生成代碼
Ctrl+B,生成代碼。
如前面所設(shè)置的,得到參數(shù)p1的定義如圖,寫(xiě)到自定義的.c.h文件里去了:

信號(hào)mySig的聲明和定義如圖,在模型名.c和模型名.h文件里:

E-Coder里對(duì)數(shù)據(jù)的默認(rèn)定義:

總結(jié)
所以說(shuō),可以使用數(shù)據(jù)對(duì)象(Data Object)來(lái)定義數(shù)據(jù)在所生成的代碼里的表達(dá)方式。
-
信號(hào)
+關(guān)注
關(guān)注
12文章
2930瀏覽量
80410 -
變量
+關(guān)注
關(guān)注
0文章
616瀏覽量
29568
發(fā)布評(píng)論請(qǐng)先 登錄
分析嵌入式軟件代碼的漏洞-代碼注入
如何搞定嵌入式 C語(yǔ)言中的全局變量問(wèn)題?
第7章 變量進(jìn)階與點(diǎn)陣LED(7.1 7.2)
常用變量的介紹
萬(wàn)里紅文本生成算法通過(guò)國(guó)家網(wǎng)信辦備案
語(yǔ)法糾錯(cuò)和testbench的自動(dòng)生成
使用Simulink自動(dòng)生成浮點(diǎn)運(yùn)算HDL代碼(Part 1)
STM32WB55使用cubemx生成的代碼編譯報(bào)錯(cuò)怎么解決?
NVIDIA recsys-examples在生成式推薦系統(tǒng)中的高效實(shí)踐
關(guān)于如何控制變量在生成代碼里的作用分析和介紹
評(píng)論