Simulink的代码生成技术快速入门(2)
https://www.bilibili.com/video/BV1PE411N72e?p=2&spm_id_from=pageDriver
1、基础设置:(代码生成都要改成固定步长,没有截图)
改成该选项,否则会生成很冗长的代码(防止溢出和记录功能)
2、Control B编译(grt编译的结果)
Ert编译结果(gain=1被优化掉了,代码简洁多了)
3、标定工作(修改参数)
4、实时查看和对比
5、代码生成后要做背靠背测试(代码和模型做对比)
6、信号-参数 数据对象(类:信号类signal、参数类parameter 把多个类放一起:包(Simulink) 类抽象为属性和操作(即函数))
7、定义信号名字
8、创建数据字典
9、添加数据对象
10,修改存储类
11、信号名解析到信号对象
12、报错(无法生成所有二进制文件:c到exe :编译(c转obj)和连接(把多个obj连到一起) 连接出错了,)
13、private.h 文件声明external这个词给编译器看的,这个变量外面有人定义,我这里不定义。但是link的时候外部也没定义,找不到这个东西
14、编译时,把两个.h头文件,都打包过来
15、解决方法(只生成代码,先不管编译、连接问题)
16、这样会一个变量多次定义
17:建立数据字典
18:注意事项
运行时要保证数据字典文件在当前模型的路径中
编译时会优化:有些数据会放到寄存器中,如果加上 volatile 告诉编译器不要改
因为该变量可变,如果给放到寄存器中,而我用标定工具改地址中的值,就白改了。
Registor:告诉编译器尽量放到寄存器中