exponenta event banner

Bitfields

Конструкция 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. В редакторе данных модели на вкладке «Параметры» в столбце «Значение» обратите внимание, что значение первого блока константы равно p1. Рядом со значением параметра нажмите кнопку действия (кнопка с тремя вертикальными точками) и выберите Создать (Create).

4. В диалоговом окне «Создание новых данных» задайте для параметра «Значение» значение Simulink.Parameter(false). Щелкните Создать (Create). A Simulink.Parameter объект, p1, появляется в базовой рабочей области. Объект сохраняет логическое значение, false, и использует тип данных boolean.

5. В Simulink.Parameter нажмите кнопку «ОК».

6. Используйте Редактор данных модели (Model Data Editor), чтобы настроить другие блоки константы для ссылки на новые объекты параметров с именами p2 и p3.

7. Откройте приложение Embedded Coder.

8. На вкладке Код C выберите Интерфейс кода > Сопоставления кодов отдельных элементов.

9. В редакторе «Сопоставления кода» на вкладке «Параметры» нажмите кнопку «Обновить сопоставления кода».

10. Используйте столбец Класс хранения для применения класса хранения BitField ко всем объектам параметров.

10. В инспекторе свойств используйте столбец «Имя структуры» для настройки каждого объекта на использование одного типа структуры. 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
};

Связанные темы