收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  1. 运行调试时如果出现无法找到xxx.h,可能是移动过文件夹,或更改了debug/release配置,需重新配置项目->属性->C/C+±>常规->附加包含目录
  2. 如果使用了AerospaceBlockset中的6DOF模块,经笔者测试必定出现以下问题,编译文件时报错C2065,未声明的标识符xxx_PeriodicIndX,xxx_PeriodicRngX

解决方法:在项目中搜索 PeriodicIndX,可以在slx同名.h文件中找到 typedef int_T PeriodicIndX_XXX_T,可以看到该名称与未声明的标识符几乎一致,浏览该头文件后可以发现,该类型仅做了声明,而未创建变量,于是在类型声明后添加变量声明即可(变量名为报错处的名称)

  //Periodic continuous state vector (global)
  typedef int_T PeriodicIndX_xxx_T[3];
  typedef real_T PeriodicRngX_xxx_T[6];
  
  PeriodicIndX_xxx_T xxx_PeriodicIndX;
  PeriodicRngX_xxx_model_T xxx_PeriodicRngX;

  1. 编译运行程序,一般可以正确运行。如果没有修改main函数,则程序不会执行任何操作。

3.代码简析

  1. 解决方案中最重要的文件为 slx同名.h 和slx同名.cpp,当需要使用模型的功能时include 同名.h即可
  2. ert_main.cpp文件为默认生成的主文件,可以在其中修改,也可以删掉此文件自己创建新的main函数文件
  3. 同名xxx.h文件中主要为类xxxModelClass的成员变量和成员函数声明
class xxxModelClass
{
    struct xxxx\_T{};//定义simulink模型中使用到的数据结构
    struct ExtU\_xxx\_T{};//simulink模型的输入
    struct ExtU\_xxx\_T{};//simulink模型的输出
    
    void setExternalInputs(const ExtU_xxx_T\*){}//设置模型输入
    const ExtY_xxx_T &getExternalOutputs() const//读取模型输出
    
    void initialize();//初始化,一般为设定各种初值
    void step();//调用即可进行一步定长仿真
    static void terminate();//根据名称应该是模型终止仿真时运行的功能
    
    //构造函数和析构函数均为默认空实现
}

  1. 同名xxx.cpp中为类的成员函数的具体定义
  2. ert_main.cpp中的主要函数功能如下
static xxxModelClass xxx_Obj;//静态全局变量,实例化了一个模型对象

void rt\_OneStep(void);//模板中只是加了些注释,让用户参考其注释设计在一步仿真中进行的读写操作。若不作更改,调用效果和step()函数时一样的,进行一步定长仿真

int_T main(int_T argc, const char \*argv[]){}//标准的控制台程序主函数,函数中依次调用了初始化initialize,循环仿真step,终止terminate,即为进行一次(不是一步)完整的仿真

4.在自己的C++工程中调用simulink模型

其实读了ert_main.cpp的代码后,感觉直接对其修改就好了,在rt_OneStep函数中设计自己每一步想要实现的操作,如保存每一步的输出,设置新的输入,主函数也直接用稍作更改即可。

不过考虑到大家可能只是在一个大项目中要调用其中一些功能,而不是将其作为主函数,笔者在这里依据自己的理解介绍下调用simulink模型的必须步骤

#include"XXX.h"//包含slx同名头文件
//需要注意,除了在生成的msvc文件夹内的头文件,程序实际上还include了一些官方自带的头文件,需要参考生成的sln的项目附加包含目录,将其添加到你的工程项目中,以下贴出我的目录路径,供参考
/\*
E:\Program Files\MATLAB\R2021b\extern\include
E:\Program Files\MATLAB\R2021b\simulink\include
E:\Program Files\MATLAB\R2021b\rtw\c\src
E:\Program Files\MATLAB\R2021b\rtw\c\src\ext\_mode\common
E:\Program Files\MATLAB\R2021b\rtw\c\ert
\*/


static xxxModelClass xxx_Obj;//实例化一个模型对象,这里参考官方main函数使用了static声明,不使用也是可以的

xxxModelClass::ExtU_xxx_T myInput;//存放模型输入
xxxModelClass::ExtY_xxx_T myOutput;//存放模型输出
xxx_Obj.initialize();//初始化模型,可以根据需要修改initialize函数中的内容
while(xxx)
{
    xxx_Obj.setExternalInputs(&myInput);//设置模型输入,如果只设置一次,记得放在循环外


![img](https://img-blog.csdnimg.cn/img_convert/522750cfd0ef33fc0b7f982c4a989295.png)
![img](https://img-blog.csdnimg.cn/img_convert/7188bada0015e51e439144d603306ff8.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**

**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

新**

**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐