C代碼中有一種特殊的運算,即按位操作。那么,
在Simulink模型里可以實現(xiàn)按位來操作嗎?
能繼而生成按位操作的代碼嗎?
位操作
要得到:
y1 = (uint8_T)(u1 & 217)
或者
y1 = (uint8_T)(u1 & 0xD9)
怎么做:
在Simulink框圖模型里使用Bitwise Operator系列的模塊;
在Stateflow里則直接使用按位操作符,比如&,|;
在MATLAB Function的m腳本里則使用bitor (bitxx)系列的命令。
實例四
1. 新建一個簡單的Simulink模型
這三個模塊都只實現(xiàn)了一個簡單的運算:對輸入u1執(zhí)行按位運算。

雙擊上圖中Bitwise Operator模塊,設置如下圖:

Chart 里則直接寫單個 & 符號表示 “按位與”,同時需要注意 Enable C-bit operations 勾選,不然會計算出錯。它默認是勾選上的。

MATLAB Function 里的語句,直接使用 bitxx 系列的命令。點擊 Edit Data,也可以手動設置輸入輸出口的數(shù)據(jù)類型。

2. 代碼生成基本配置
求解器:定步長—離散求解器
系統(tǒng)目標文件:ert.tlc
3. 新建數(shù)據(jù)對象
打開Model Explorer,點擊菜單的Add,在Base Workspace里定義輸入輸出信號的數(shù)據(jù)對象,數(shù)據(jù)對象類型為Simulink.Signal,并如圖設置輸入輸出均為uint8類型,StorageClass設置為ExportedGlobal:

4. 信號關聯(lián)
在信號線上右鍵,將信號與Base Workspace的數(shù)據(jù)對象關聯(lián)在一起。鼠標操作的方式,可以參考之前的帖子里的菜單截圖。因為這里的信號略多,所以可以使用命令的方式來實現(xiàn):

此時,第一張模型截圖中信號名前方的藍色小叉子就會出現(xiàn)。
5. 生成代碼
Ctrl+B,生成代碼。
如前面所設置的,得到這三個按位操作的代碼:

所以說,在Simulink建模也可以實現(xiàn)按位運算:
在Simulink框圖模型里使用Bitwise Operator模塊;
在Stateflow里則直接使用按位操作符,比如&,|;
在腳本里則使用bitor (bitxx)系列的命令。
-
C代碼
+關注
關注
1文章
90瀏覽量
15173 -
數(shù)據(jù)類型
+關注
關注
0文章
237瀏覽量
14171 -
腳本
+關注
關注
1文章
408瀏覽量
29170
發(fā)布評論請先 登錄
關于C代碼中的特殊運算按位操作的介紹和應用
評論