Битовые поля

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. В Model Data Editor нажмите кнопку дополнительной информации Show/refresh.

8. Установите представление Change выпадающий список на Code.

9. Используйте столбец Класса памяти, чтобы применить пользовательский класс памяти BitField ко всем объектам параметра.

10. Используйте столбец Имени 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
};

Похожие темы