Как передать объединение в качестве параметра функции

Этот код предназначен для драйвера для микросхемы ЦАП .

У меня есть битовое поле ниже, которое представляет 24-битный регистр. Итак, что мне нужно сделать, это заполнить битовое поле и записать его через SPI в чип.

    typedef struct {
        uint8_t rdwr_u8:       1;
        uint8_t not_used_u8:   3;
        uint8_t address_u8:    4;
        uint8_t reserved_u8:   8;
        uint8_t data_u8:       8;
        uint8_t padding_u8:    8;
    } GAIN_REG_st;

В своей функции инициализации я создаю объединение, как показано ниже.

    union{
        GAIN_REG_st GAIN_st;
        uint32_t G_32;
    } G_u;

Теперь мне нужно передать битовое поле GAIN_REG_st функции, которая будет его заполнять.

После заполнения я могу присвоить битовое поле 32-битному целому числу и передать это целое число в функцию низкого уровня для записи через SPI.

Как передать битовое поле GAIN_REG_st функции, когда оно находится внутри объединения? (Можете ли вы показать прототип и вызов функции)?

Как функция обращается к членам битового поля? (это было бы похоже на G_u.GAIN_st.rdwr_u8 = 1 ?)

8
задан Peter Mortensen 30 April 2011 в 09:14
поделиться