当前位置:网站首页>2837xd 代碼生成——StateFlow(4)
2837xd 代碼生成——StateFlow(4)
2022-07-02 09:37:00 【Quikk】
2837xd 代碼生成——StateFlow(4)
16 Chart調試
在Animation中可以進行設置調試過程的轉移速度。

16.1 設置斷點類型:
1)chart只能打上進入時的斷點:

打上斷點後,左下角會有相應的標識。

2)State打斷點,有三種類型:I、進入State II、在State中 III、退出State

打上斷點後,State2左下角會出現相應的標識,點擊能够看到斷點類型:

3)同樣的操作,轉移也可以打入斷點:

4)在Model Explorer中可以為事件打上斷點:

16.2 斷點管理:
點擊任意一個斷點,在出現的對話框中點擊Breakpoints List進入斷點管理。這個斷點管理是不局限於某個模型的,若你打開了多個模型,則多個模型的斷點都會在斷點管理上顯示。

斷點管理界面如上,這裏使用的官方例程(Command Window輸入sf_car即可進入)。斷點管理的界面上Condition含義是:當滿足條件時,斷點才會生效。這跟在C中打斷點一樣,我們有時候會希望在循環時,第多少次循環進入斷點。Hits是記錄進入斷點的次數。
斷點可以較快的定比特Chart的錯誤之處。
17 Watch Data
在信號線上,右鍵可以選擇加入Watch Data Window:

選擇完畢之後,會彈出Watch Data Window的窗口。後面的DEBUG即可。
18 調用Work Space變量
調用的基本語言格式是
y=ml.x; //x需要在Work Space中已經進行定義;
注意:需要將chart的動作語言設置成為 C語言動作(Matlab語言不行)

其他操作同常規進行:

這裏可以快速定義模型的回調函數,進行定義,免除手動定義(回調函數具體內容請自行查閱Simulink說明):


ml語句也可以進行重載:
y=ml('sin(%f)',u); //u是Work Space的變量,這裏的sin函數可以替換成任何Matlab的內建函數
y=ml.my_sin(u); //my_sin是自己編寫的matlb函數文件

19 StateFlow 調用c代碼
分別編寫好.c和.h文件放置在同一目錄下:

然後進入 Configuration Parameters中進行相關的設置:


然後在Chart中進行調用即可。這裏因為引入的是C語言文件,所以動作語言必須選擇C語言。
20 2837d使用Chart進行構建模型搭建實例
這裏搭建一個實時的計時器模塊,其分為初始化模塊和XINT模塊和計數器模塊。

1)變量這裏使用的是Data Store Memory模塊,在屬性裏面可以設置變量的類型。

2)初始化模塊。初始化KEY作為外部中斷使用,本來想用LED燈指示初始化過程,但是失敗了。原因是:生成的代碼將GPIO的兩條指令放置在了step函數進行運行。現在想到的是,直接在初始化模塊裏面加入點亮和熄滅的函數。因為初始化模塊加入的代碼總是放置在初始化函數的最後面。打個比方:如果生成的代碼使用到了GPIO0作為I/O使用,那麼一定會在初始化模塊中進行初始化。在初始化代碼裏面可以直接使用比特操作給GPIO端口賦值就可以操作。但是後面的步長注意一定要使用到GPIO0。(這樣才能保證被初始化)。

3)外部中斷函數模塊,這裏兩個中斷函數功能一致。都是在中斷函數中,將(0-1循環)的數值存入變量(XINT1、XINT2)中。如果上一次執行XINT函數,存儲的是0,那麼下一次執行就會存儲1.這樣就產生了一個脈沖的上昇沿。對應的可以產生下降沿。這個邊沿信號就可以作為Chart的事件。


4)Chart模塊實現了計數的功能,可以由XINT1、XINT2分別啟動和複比特計數。這裏的TIC事件是一個隨著步長產生0、1序列,如果步長設置為0.01,那麼當執行100次TIC事件。可以認為經過了1秒。經過60s就將min指定為+1。注意因為ccs使用c代碼驅動,所以這裏的chart動作語言必須選用c語言。


5)實驗結果。這裏直接開啟SCI_A進入仿真模式,然後按下按鍵進入Running:


边栏推荐
- Say goodbye to 996. What are the necessary plug-ins in idea?
- Required request body is missing:(跨域问题)
- idea查看字节码配置
- The channel cannot be viewed when the queue manager is running
- 图像识别-数据标注
- College Students' CET-4 and CET-6 composition template (self created version, successfully crossed CET-6)
- Attributes of classfile
- 个人经历&&博客现状
- AMQ 4043 solution for errors when using IBM MQ remote connection
- Read 30 minutes before going to bed every day_ day3_ Files
猜你喜欢

web安全与防御

告别996,IDEA中必装插件有哪些?

Insight into cloud native | microservices and microservice architecture

保存视频 opencv::VideoWriter

Machine learning practice: is Mermaid a love movie or an action movie? KNN announces the answer

BugkuCTF-web21(详细解题思路及步骤)

Navicat remote connection MySQL reports an error 1045 - access denied for user 'root' @ '222.173.220.236' (using password: yes)
![[go practical basis] gin efficient artifact, how to bind parameters to structures](/img/c4/44b3bda826bd20757cc5afcc5d26a9.png)
[go practical basis] gin efficient artifact, how to bind parameters to structures

Matplotlib swordsman line - first acquaintance with Matplotlib

Operation and application of stack and queue
随机推荐
int与string、int与QString互转
[go practical basis] how to customize and use a middleware in gin
Oracle modify database character set
逆变器simulink模型——处理器在环测试(PIL)
View the port of the application published by was
Customize redis connection pool
道阻且长,行则将至
How to use PHP spoole to implement millisecond scheduled tasks
自定義Redis連接池
Activity的创建和跳转
每天睡觉前30分钟阅读_day4_Files
FragmentTabHost实现房贷计算器界面
cmake的命令-官方文档
kinect dk 获取CV::Mat格式的彩色RGB图像(openpose中使用)
Difference between redis serialization genericjackson2jsonredisserializer and jackson2jsonredisserializer
Watermelon book -- Chapter 6 Support vector machine (SVM)
Read 30 minutes before going to bed every day_ day3_ Files
YOLO物体识别,生成数据用到的工具
Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedd
Microservice practice | declarative service invocation openfeign practice