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

雙擊上圖中Bitwise Operator模塊,設(shè)置如下圖:

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

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

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

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

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

所以說,在Simulink建模也可以實(shí)現(xiàn)按位運(yùn)算:
在Simulink框圖模型里使用Bitwise Operator模塊;
在Stateflow里則直接使用按位操作符,比如&,|;
在腳本里則使用bitor (bitxx)系列的命令。
-
C代碼
+關(guān)注
關(guān)注
1文章
90瀏覽量
15182 -
數(shù)據(jù)類型
+關(guān)注
關(guān)注
0文章
237瀏覽量
14185 -
腳本
+關(guān)注
關(guān)注
1文章
409瀏覽量
29193
發(fā)布評論請先 登錄
單片機(jī)位操作指令
cw32f030c8實(shí)現(xiàn)點(diǎn)燈
arm單片機(jī)位帶操作的原理
蜂鳥內(nèi)核模塊浮點(diǎn)指令運(yùn)算數(shù)據(jù)的獲取
CSR讀寫控制模塊
如何獲取蜂鳥內(nèi)核執(zhí)行模塊浮點(diǎn)指令的運(yùn)算數(shù)據(jù)
CSR讀寫控制模塊詳解
使用Simulink自動生成浮點(diǎn)運(yùn)算HDL代碼(Part 1)
NTT設(shè)計介紹
CSR讀寫控制模塊的詳解
基于LockAI視覺識別模塊:C++圖像的基本運(yùn)算
基于LockAI視覺識別模塊:C++圖像的基本運(yùn)算
關(guān)于C代碼中的特殊運(yùn)算按位操作的介紹和應(yīng)用
評論