基于F28335的Simulink代码生成(一)——搞懂模型的运行逻辑

11 篇文章 24 订阅
9 篇文章 3 订阅

基于F28335的Simulink代码生成系列文章目录

基于F28335的Simulink代码生成(一)——搞懂模型的运行逻辑
基于F28335的Simulink代码生成(二)——EPWM模块同步设置问题
基于F28335的Simulink代码生成(三)——EQEP模块获取光电编码器的速度与角度信息
基于F28335的Simulink代码生成(四)——如何链接可以访问底层文件的外部源文件和头文件
基于F28335的Simulink代码生成(五)——DMA的使用
基于F28335的Simulink代码生成(六)——如何修改变量的存储类型
基于F28335的Simulink代码生成(七)——成果展示



前言

最近由于一下项目有幸得到一些资料,从而能给我机会快速熟悉快速原型这个玩意儿。这东西说实话确实比工程代码来的方便,但是这仅限于简单一些的工程,另外的话就是对于初学者相对友好,不需要非常深入寄存器的一些知识以及写代码的一些技巧。不过我目前做的一些东西反而让我觉得快速原型并不好用,因为因为他的运行逻辑更像是并行的,而不会像代码中那样从上往下写的串行逻辑。而且模型能实现的东西很有限,为了实现一些模型做不了的事情,必须对寄存器以及代码的东西很熟悉才行。

快速原型

与我们传统的工程代码编写相比,快速原型的优势我也不再赘述了,我主要来描述下我的需求和问题。目前需要实现在主函数中进行端口的初始化以及相关函数的基本操作。但是他模型的最外层界面就是一个中断,可以设置为timer0中断或者其他ADC中断等。那我要如何进行上述的初始化呢?

模型之外的方法

上面提到的问题值得深思,因为如果是在timer0中断里进行初始化显然会重复初始化而产生问题。那么怎么办呢?
在模型中,可以设置不同的模块,入ADC、PWM等等,他们的初始化操作显然是在main函数中执行的,那么必然有其他的方法可以实现将代码添加进主函数中执行。因此我进行了尝试之后发现了解决办法并进行了一些对比。
在这里插入图片描述
上面的四个模块分别应写入不同的内容,其中System Initialize里的内容就是放在主函数中运行的,而System Output的内容是作为输出功能依旧在timer0(或者ADC中断,看你设置)中。另外值得说明的就是Model Source和Model Header了,前者一般做一些define或者变量赋值的操作(其代码部分是放在在该模型函数中的,不是在模型中断中,具体在c文件的头部还是尾部可以选择,如下图所示,我模型的名字就是VVVF),后者一般是结构体定义或者变量定义的操作,具体也可以自己尝试,与工程代码中应该有些类似。
在这里插入图片描述
在这里插入图片描述
综上 就大概解决了我对上面逻辑的一些困惑。另外在模型中定义全局变量也是没问题的,是放在,h文件的结构体中的。中断的话可以单独拿出来看,并不和在模型哪个位置产生冲突。

  • 7
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LEODWL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值