C代碼中有一種特殊的運算,即按位操作。那么,
在Simulink模型里可以實現按位來操作嗎?
能繼而生成按位操作的代碼嗎?
位操作
要得到:
y1 = (uint8_T)(u1 & 217)
或者
y1 = (uint8_T)(u1 & 0xD9)
怎么做:
在Simulink框圖模型里使用Bitwise Operator系列的模塊;
在Stateflow里則直接使用按位操作符,比如&,|;
在MATLAB Function的m腳本里則使用bitor (bitxx)系列的命令。
實例四
1. 新建一個簡單的Simulink模型
這三個模塊都只實現了一個簡單的運算:對輸入u1執行按位運算。
雙擊上圖中Bitwise Operator模塊,設置如下圖:
Chart 里則直接寫單個 & 符號表示 “按位與”,同時需要注意 Enable C-bit operations 勾選,不然會計算出錯。它默認是勾選上的。
MATLAB Function 里的語句,直接使用 bitxx 系列的命令。點擊 Edit Data,也可以手動設置輸入輸出口的數據類型。
2. 代碼生成基本配置
求解器:定步長—離散求解器
系統目標文件:ert.tlc
3. 新建數據對象
打開Model Explorer,點擊菜單的Add,在Base Workspace里定義輸入輸出信號的數據對象,數據對象類型為Simulink.Signal,并如圖設置輸入輸出均為uint8類型,StorageClass設置為ExportedGlobal:
4. 信號關聯
在信號線上右鍵,將信號與Base Workspace的數據對象關聯在一起。鼠標操作的方式,可以參考之前的帖子里的菜單截圖。因為這里的信號略多,所以可以使用命令的方式來實現:
此時,第一張模型截圖中信號名前方的藍色小叉子就會出現。
5. 生成代碼
Ctrl+B,生成代碼。
如前面所設置的,得到這三個按位操作的代碼:
所以說,在Simulink建模也可以實現按位運算:
在Simulink框圖模型里使用Bitwise Operator模塊;
在Stateflow里則直接使用按位操作符,比如&,|;
在腳本里則使用bitor (bitxx)系列的命令。
-
C代碼
+關注
關注
1文章
90瀏覽量
14708 -
數據類型
+關注
關注
0文章
237瀏覽量
13849 -
腳本
+關注
關注
1文章
397瀏覽量
28380
發布評論請先 登錄
基于LockAI視覺識別模塊:C++圖像的基本運算
Verilog中signed和$signed()的用法

邏輯異或運算符在Python中的用法
C語言指針運算符詳解
技術干貨驛站 ▏深入理解C語言:編程高手必備,全方位解析運算符的核心技能!

評論