当前位置:网站首页>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:


边栏推荐
- Typora installation package sharing
- 攻防世界-Web进阶区-unserialize3
- 记录一下初次使用Xray的有趣过程
- 自定義Redis連接池
- A detailed explanation takes you to reproduce the statistical learning method again -- Chapter 2, perceptron model
- [go practical basis] how to customize and use a middleware in gin
- Number structure (C language -- code with comments) -- Chapter 2, linear table (updated version)
- Micro service practice | introduction and practice of zuul, a micro service gateway
- Activity的创建和跳转
- 微服务实战|负载均衡组件及源码分析
猜你喜欢

Typora installation package sharing

From concept to method, the statistical learning method -- Chapter 3, k-nearest neighbor method

上班第一天的报错(AWVS卸载不彻底)

知识点很细(代码有注释)数构(C语言)——第三章、栈和队列

Redis 序列化 GenericJackson2JsonRedisSerializer和Jackson2JsonRedisSerializer的区别

互联网API接口幂等设计

概念到方法,绝了《统计学习方法》——第三章、k近邻法

idea查看字节码配置

微服务实战|Eureka注册中心及集群搭建

Chrome browser tag management plug-in – onetab
随机推荐
微服务实战|原生态实现服务的发现与调用
Operation and application of stack and queue
微服务实战|熔断器Hystrix初体验
Microservice practice | Eureka registration center and cluster construction
hystrix 实现请求合并
Probability is not yet. Look at statistical learning methods -- Chapter 4, naive Bayesian method
Creation and jump of activity
FragmentTabHost实现房贷计算器界面
C语言之数据插入
上班第一天的报错(AWVS卸载不彻底)
Chrome浏览器插件-Fatkun安装和介绍
分布式锁的这三种实现方式,如何在效率和正确性之间选择?
Oracle modifies tablespace names and data files
Required request body is missing:(跨域问题)
Solutions to Chinese garbled code in CMD window
From concept to method, the statistical learning method -- Chapter 3, k-nearest neighbor method
破茧|一文说透什么是真正的云原生
ClassFile - Attributes - Code
BugkuCTF-web24(解题思路及步骤)
Chrome video download Plug-in – video downloader for Chrome