typedef struct { unsigned int p1 : 1; unsigned int p2 : 1; unsigned int p3 : 1; } my_struct_type
1. Открытая модель ex_struct_bitfield_CSC
в качестве примера. Модель содержит три блока Константа и три блока Выходного порта.
2. Откройте Model Data Editor. На вкладке Modeling нажмите Model Data Editor.
3. В Model Data Editor, на вкладке Parameters, в Столбце значений, замечают, что значением первого блока Constant является p1
. Рядом со значением параметров кликните по кнопке действий (кнопка с тремя вертикальными точками) и выберите Create.
4. В диалоговом окне Create New Data, установленном Значении к Simulink.Parameter(false)
. Нажмите Create. Simulink.Parameter
объект, p1
, появляется в базовом рабочем пространстве. Объектно-ориентированная память булево значение, false
, и использует тип данных boolean
.
5. В Simulink.Parameter
диалоговое окно свойства, нажать ОК.
6. Используйте Model Data Editor, чтобы сконфигурировать другие блоки Константа, чтобы относиться к новым объектам параметра под названием p2
и p3
.
7. Откройте приложение Embedded Coder.
8. Во вкладке C Code выберите Code Interface> Individual Element Code Mappings.
9. В редакторе Отображений Кода, на вкладке Parameters, нажимают кнопку Update Code Mappings.
10. Используйте столбец Класса памяти, чтобы применить класс памяти BitField
ко всем объектам параметра.
10. В Property Inspector, sse столбец Имени 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 };