首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

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

  • 23-09-22 01:03
  • 4078
  • 11028
blog.csdn.net

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

阅读本文需要有一定的Arduino IDE开发调试经验和Simulink代码生成经验。关于Simulink代码生成可以参考博主的专栏《Simulink代码生成》。部分内容参照上一篇博客《集成与验证:Simulink与STM32联合开发》,本文就不再赘述。

文章目录

  • 1 问题引入
  • 2 集成方案
  • 3 建模与编程过程
    • 3.1 Simulink模型搭建
    • 3.2 代码生成配置
    • 3.3 Arduino项目搭建
    • 3.4 串口打印、验证结果
  • 4 总结

1 问题引入

在上一篇博客《集成与验证:Simulink与STM32联合开发》中,成功地将Simulink生成出地代码加入到STM32工程中编译,并通过下载到STM32F407中验证了方案的正确性。

对于创客朋友们来说,还有一个常用的硬件就是知名的Arduino。Arduino的封装程度很高,并且有自己的一个专门的IDE供开发。但是Arduino的并成语言是C++,和STM32有些区别。所以本文会研究通过同样的方案、同样的Simulink模型生成C++的代码,并放在Arduino中运行。
在这里插入图片描述

2 集成方案

本文的集成方案与《集成与验证:Simulink与STM32联合开发》相同,只不过主函数变成了main.ino文件。所以集成方案参照《集成与验证:Simulink与STM32联合开发》的第2章即可。

3 建模与编程过程

3.1 Simulink模型搭建

模型的搭建、Storage Class的建配置与《集成与验证:Simulink与STM32联合开发》的第3.1章相同。

3.2 代码生成配置

搭建好模型,配置好信号线的Storage Class后,进行代码生成配置。这里和STM32的配置略有不同。

1)打开Simulink配置,配置离散求解器、代码生成的目标文件,以及目标硬件。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里的目标文件还是ert.tlc,但是语言要选为C++。目标硬件要配置为AVR。

2)点击左侧的Interface,把Code Interface packaging选为Nonreusable function。默认的选项是C++ Class,会生成C++类的接口,不支持一部分Storage Class。Nonreusable function生成的代码就会和C代码差不多了。
在这里插入图片描述
3)Ctrl + B生成代码后会发现生成了一个demo.cpp的C++源文件,而不是demo.c的C源文件。
在这里插入图片描述
内容基本上和C源文件一样,这里就不再解析代码内容。

3.3 Arduino项目搭建

1)新建一个空白的Arduino项目main.ino,将如下代码拷贝进去。

#include "demo.h"

float Demo_Input;     //在main.ino文件中定义全局变量Demo_Input

void setup() {
  // put your setup code here, to run once:
  Demo_Input = 0;       //初始化Demo_Input为0
  demo_initialize();    //demo模型的初始化函数
  Serial.begin(9600);   //串口初始化
}

void loop() {
  // put your main code here, to run repeatedly:
  Demo_Input = Demo_Input + 1;   //Demo_Input每个循环加1
  demo_step();                   //执行模型的step函数,给Demo_Output赋值为Demo_Input的两倍
  Serial.print(Demo_Input);      //打印输入变量和输出变量
  Serial.print(";");
  Serial.print(Demo_Output);
  Serial.println(";");
  delay(1000);                   //延时1s
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

整体代码的思路和博客《集成与验证:Simulink与STM32联合开发》的第3.4章相似。

2)将Simulink生成的源文件和头文件拷贝到main.ino目录下。
在这里插入图片描述
在Arduino开发中,只要把源文件和头文件放在项目目录里,就可以调用到了,不需要像STM32的环境中那样配置一番。

3.4 串口打印、验证结果

通过Arduino IDE编译、上传,再通过串口打印可以得出Demo_Input和Demo_Output全局变量的数值。
在这里插入图片描述
从图中可以看出,串口打印的输入每隔1秒钟会加1,输出一直是输入的2倍。从而验证了模型的2倍增益效果已经体现在Arduino项目中了。

4 总结

通过Simulink生成适用Arduino的代码其实也比较简单,主要是注意配置C++以及目标硬件即可。

>>返回个人博客总目录

注:本文转载自blog.csdn.net的chhttty的文章"https://blog.csdn.net/u013288925/article/details/108303358"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top