位域
C 构造
typedef struct { unsigned int p1 : 1; unsigned int p2 : 1; unsigned int p3 : 1; } my_struct_type
过程
1.打开示例模型 ex_struct_bitfield_CSC
。该模型包含三个 Constant 模块和三个 Outport 模块。
2.打开模型数据编辑器。在建模选项卡上,点击模型数据编辑器。
3.在模型数据编辑器中,在参数选项卡的值列中,观测第一个 Constant 模块的值为 p1
。点击参数值旁边的操作按钮(具有三个纵点的按钮),然后选择创建。
4.在“创建新数据”对话框中,将值设置为 Simulink.Parameter(false)
。点击创建。基础工作区中将显示一个 Simulink.Parameter
对象 p1
。该对象存储布尔值 false
,并使用数据类型 boolean
。
5.在 Simulink.Parameter
属性对话框中,点击确定。
6.使用模型数据编辑器配置其他 Constant 模块,以引用名为 p2
和 p3
的新参数对象。
7.打开 Embedded Coder。
8.在 C 代码选项卡上,选择代码接口 > 个体元素代码映射。
9.在代码映射编辑器中,在参数选项卡下点击更新代码映射按钮。
10.使用存储类列将存储类 BitField
应用于所有参数对象。
10.在属性检查器中,使用结构体名称列将每个对象配置为使用相同的结构体类型 my_struct
。
11.从模型中生成代码。
结果
生成的头文件 ex_struct_bitfield_CSC.h
定义结构体类型 my_struct_type
。
/* Type definition for custom storage class: BitField */ typedef struct myStruct_tag { uint_T p1 : 1; /* Referenced by: '<Root>/Constant1' */ uint_T p2 : 1; /* Referenced by: '<Root>/Constant2' */ uint_T p3 : 1; /* Referenced by: '<Root>/Constant3' */ } myStruct_type;
生成的源文件 ex_struct_bitfield_CSC.c
定义并初始化结构体变量 my_struct
。
/* Definition for custom storage class: BitField */ myStruct_type myStruct = { /* p1 */ false, /* p2 */ false, /* p3 */ false };