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. Откройте Model Data Editor. На вкладке Моделирование (Modeling) щелкните Редактор данных модели (Model Data Editor).
3. В Model Data Editor на вкладке Parameters, в столбце Value, наблюдайте, что значение первого блока Constant p1. Рядом со значением параметров нажмите кнопку действия (кнопка с тремя вертикальными точками) и выберите Create.
4. В диалоговом окне «Создание новых данных» установите значение Simulink.Parameter(false)
. Нажмите кнопку Создать. A Simulink.Parameter
объект, p1
, появляется в базовом рабочем пространстве. Объект хранит логическое значение, false
, и использует тип данных boolean
.
5. В Simulink.Parameter
Свойство диалоговом окне нажмите кнопку ОК.
6. Используйте Model Data Editor, чтобы сконфигурировать другие блоки Constant для обращения к новым объектам параметров с именем p2 и
p3
.
7. Откройте приложение Embedded Coder.
8. На вкладке C Code выберите Code Interface > Individual Element Code Mappings.
9. В редакторе Отображения на вкладке Parameters нажмите кнопку Update Code Mappings.
10. Используйте столбец Класс памяти для применения класса памяти BitField
ко всем объектам параметров.
10. В Property Inspector просмотрите столбец «Имя Struct», чтобы настроить каждый объект на использование одного и того же типа структуры, 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 */ 0, /* p2 */ 0, /* p3 */ 0 };