Битовые поля

C построение

typedef struct {
   unsigned int p1 : 1;
   unsigned int p2 : 1;
   unsigned int p3 : 1;
} my_struct_type

Процедура

1. Открытая модель ex_struct_bitfield_CSC в качестве примера. Модель содержит три блока Константа и три блока Выходного порта.

2. Модель открывает в Редакторе Simulink перспективный режим кода. Если это не делает, выберите Code> C/C ++ Code> Configure Model in Code Perspective.

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;
  uint_T p2 : 1;
  uint_T p3 : 1;
} myStruct_type;

Сгенерированный исходный файл ex_struct_bitfield_CSC.c задает и инициализирует переменную my_struct структуры.

/* Definition for custom storage class: BitField */
myStruct_type myStruct = {
  /* p1 */
  0,

  /* p2 */
  0,

  /* p3 */
  0
};

Похожие темы