Битовые поля

C построение

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

Похожие темы