今天给大家带来的仍然是基于MBD的嵌入式代码生成,主要把应用层和底层接口之间的代码生成配置说一下。本周末会更新功能安全相关,欢迎大家留言交流!

作为一个总是用C写代码的人来说,第一次接触到基于MBD的代码生成的时候就迫不及待的想知道怎么能让生成的代码用到嵌入式控制器中。刚开始,没有Green Hills、没有matlab的硬件支持包,也不会makefile,但简陋的设施仍然无法阻挡我研究的步伐。后来经过摸索发现真想学习代码生成,只需要有单片机软件编译器(对应芯片的就行),matlab就可以搞定。下面通过一个简单实例来给大家演示下,如何通过配置让应用层和底层拥有共同的接口。

假设有如下所示电路,当左侧滑动变阻器发生变化时调整灯的亮度。

首先底层代码肯定会有如下图所示接口示意代码:

其中in_AD为输入接口,out_PWM为输出接口,Test1_step ()为应用程序。Test1.c为应用程序代码。所以说,当接口定义完成后底层代码和应用层代码可以按照这套接口来同时开发,这样加快了项目的开发进度。那接下来看看怎么样才能得到对应的应用代码可以直接放到编译软件中来编译。这里我们建立这样的一个模型:

做以下配置(前言说过的配置不再赘述,大家忘记的可以点击链接会跳转到前前言篇Simulink之嵌入式C代码生成-前言篇):

点击代码生成。

按照下图所示将模型代码放入到编译器中,将Test1.h包含到main.h中,并调用模型生成的代码。点击编译,可以看到编译通过,但是模型到底能不能执行呢?实际仿真一下,答案是不能按照想要的结果执行的。

打开Test1.c就可以看到,模型执行的实际代码如下:

可以发现这里输入接口不是in_AD而是Test1_U.AD;同样的,输出也不是。描述到这里终于到了关键点——如何灵活设置应用层接口?

创建完成信号后记得将workspace中的信号另存为脚本文件(下次分析这一步操作的原因)。设置完成之后再次编译,可观察到生成的代码如下:

代码中的接口与我们最开始定义的接口完全一致了,将代码放到编译器中就可以编译仿真了。向编译器中放代码的时候只需放入Test1相关的文件直接替换即可,不用更改底层代码,用起来是不是很方便?当应用程序比较复杂时,也只是多了几个文件,照样放进去就可以用。

本篇只是演示了接口生成的过程,但是在实际编程过程中不是只有外部变量一种接口,还有像宏定义、可导出外部变量、标定量等等,下篇详细介绍什么样的需求对应什么样的配置。那么,我们下期见!

simulink和c语言开发,Simulink之嵌入式C代码生成-应用层和底层的接口相关推荐

  1. c语言接口作用是什么,单片机接口C语言开发技术

    单片机接口C语言开发技术 编辑 锁定 讨论 上传视频 <单片机接口C语言开发技术>是2009年清华大学出版社出版的图书,作者是龚运新.彭建军.[1] 书    名 单片机接口C语言开发技术 ...

  2. 使用Matlab+Simulink开发Cortex-M系列嵌入式处理器应用程序

    使用Matlab+Simulink开发Cortex-M系列嵌入式处理器应用程序 文档编号 TN_AAAA_A0 关键字 Matlab, Simulink, Cortex-M, 基于模型设计, Mode ...

  3. 软件集成:Simulink与Arduino联合开发

    本文首先通过一个简单的Simulink模型生成代码,然后将代码copy到一个Arduino路径中去编译软件.最后将软件下载到Arduino Uno中,通过串口输出Simulink计算的结果. 阅读本文 ...

  4. uml+oopc嵌入式c语言开发精讲_当前火爆的嵌入式领域,为什么选择C语言作为开发语言?了解一下...

    C语言和嵌入式C编程有什么区别?其区别在于嵌入式的C语言是跑在嵌入式的开发板上的,CPU和电脑不一样,所以编译器也是不一样的,生成的可执行程序也是不一样的.选择嵌入式开发语言归结于嵌入式系统开发的特点 ...

  5. uml+oopc嵌入式c语言开发精讲_嵌入式开发中更接近底层的汇编与C语言

    分享本文,介绍下更接近硬件底层的C语言与汇编,解释 CPU 如何执行代码. 高级语言与低级语言 学习编程其实就是学习与计算机交流的语言.因为计算机不理解人类语言,通过编译器把人类写的代码转成二进制代码 ...

  6. 频率统计表用c语言_空间矢量脉宽调制建模与仿真(基于C语言的SIMULINK仿真模型 | 基于SVPWM模块的仿真)...

    文末有仿真模型下载方式 1.1 基于C语言的SIMULINK仿真模型 使用C语言在MATLAB/SIMULINK中仿真,需要借助s-function builder模块实现.七段式SVPWM仿真模型如 ...

  7. 嵌入式 linux 应用 go 语言开发(开篇,缘起)

    go语言被称作互联网时代的c语言,用来开发嵌入式linux是一种享受. 希望能否带来开发工作效率的提升,产品质量稳定性方面的提升,产品功能上的增强. 物联网时代,就是要有所"变革" ...

  8. 软件集成:Simulink与STM32联合开发

    本文首先通过一个简单的Simulink模型生成代码,然后将代码copy到一个STM32工程中去编译软件.最后将软件下载到STM32F407中,通过串口输出Simulink计算的结果. 阅读本文需要有一 ...

  9. L1D1:嵌入式Linux C语言开发工具及基础命令

    嵌入式Linux C语言开发工具及基础命令 一.ubuntu环境搭建 请自行准备VMware workstation15安装包 及 ubuntu18.04.iso镜像文件.可参考链接:VMware W ...

最新文章

  1. Python 知识点笔记:走进面向对象
  2. php json存mysql斜杠_MySQL 存储php中json_encode格式中文问题及解决
  3. 游戏《蔚蓝山》教我的编程道理
  4. 网络 IO 演变过程
  5. html object标签与java,html之object标签的classid收集
  6. 【个人笔记】OpenCV4 C++ 快速入门 11课
  7. webApi项目中的问题
  8. python制作课程表_创建课程表设计
  9. Greensock平台
  10. cdr转换成html格式,如何将CDR高版本转换成低版本?CDRX7文件转换成X4教程
  11. 含有使字的诗句_带有一字的诗句
  12. Gartner VPT技术原理 ——Tenable:专注于构成风险最大的漏洞
  13. 硬件知识:声控楼道灯电路
  14. 联想一体机计算机桌面不显示,联想一体机关闭屏幕_联想一体机怎么关屏幕
  15. 谢孟军:中国 Go 语言领军人创业第五年
  16. gap,margin和padding的区别
  17. idea中隐藏或显示文件
  18. Android 模仿flabby bird游戏开发
  19. 验证中的随机种子(seed),VCS
  20. 微信小程序 SyntaxError: Unexpected token o in JSON at position 1 at JSON.parse (<anonymous>)

热门文章

  1. html控制图的宽,用JointJS做一个简单的功能控制图
  2. 汉字的ascii码值范围_ASCII代码
  3. python3多线程编程_Python 3-多线程编程
  4. linux 检测mysql链接_MySQL笔记
  5. Windows下安装scikit-learn
  6. 数字图像处理 第二章 图像处理基础
  7. Android手绘效果实现
  8. Java8 Stream详解~ 提取/组合
  9. Python编程从入门到实践~文件写入
  10. log4j 控制台和文件输出乱码问题解决