【MBD开发】Simulink重定义数据类型
typedef signed char SINT8;
typedef unsigned char UINT8;
typedef signed int SINT16;
typedef unsigned int UINT16;
typedef signed long SINT32;
typedef unsigned long UINT32;
以【SINT8】为例,对【signed char】重新进行定义。申明变量的时候直接使用【SINT8】关键字就可以。同样的在Simulink下也有这个问题!
介绍一个简单的Simulink模型
创建数据字典,设置输入输出的数据类型
In_1:int16In_2:uint32Out_1:uint32Out_2:single
模型逻辑很简单,将数据类型匹配到Simulink中的信号。打开模型数据类型,可以看到变量的数据类型。
在生成代码的时候,C语言数据类型为SimulinkEmbeeded Code 默认的格式如:int16_T。
但通常在嵌入式工程中,MCU工程师会自己定义一个数据类型,这个数据类型大概率与Simulink生成的不符合,那该怎么办呢?
在【Model Explorer】->【Add】->【SimulinkAliasType】
左边配置新的AliasType名称,右边配置对应的数据类型
然后将in_1\in_2\out_1\out_2的数据类型切换为刚刚创建的AliasType
点击仿真,可以看到原型中的数据类型已经更新成为刚刚创建的AliasType
int16_t->s16
uint32_t->u32
single->float32
生成代码后,在Model.c文件,可以看到已经使用创建的AliasType定义数据类型
而在Model.h中则可以看到s16\u32\float32的原型
typedef int16_T s16;
typedef uint32_T u32;
typedef real32_T float32;
在模型设置中->【Data Type Relacement】->输入需要替换的数据类型
在不更改输入输出数据类型的情况下,生成代码的的数据类型将会被自动替换。但是要注意的是创建Simulink AliasType这个步骤不能省!
赞 (0)