Main Content

位域

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 模块,以引用名为 p2p3 的新参数对象。

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
};

相关主题