2

我正在使用 esp32 并尝试使用 i2c 库。

有一个配置结构。

typedef struct{
i2c_mode_t mode;     /*!< I2C mode */
int sda_io_num;      /*!< GPIO number for I2C sda signal */
int scl_io_num;      /*!< GPIO number for I2C scl signal */
bool sda_pullup_en;  /*!< Internal GPIO pull mode for I2C sda signal*/
bool scl_pullup_en;  /*!< Internal GPIO pull mode for I2C scl signal*/

union {
    struct {
        uint32_t clk_speed;     /*!< I2C clock frequency for master mode, (no higher than 1MHz for now) */
    } master;
    struct {
        uint8_t addr_10bit_en;  /*!< I2C 10bit address mode enable for slave mode */
        uint16_t slave_addr;    /*!< I2C address for slave mode */
    } slave;
};
} i2c_config_t;

当我尝试在我的代码中创建和分配 i2c_config_t 时,从此开始:

                i2c_config_t i2cConfigT={
                    .mode = I2C_MODE_MASTER,
                    .sda_io_num = _sda,
                    .scl_io_num = _clk,
                    .sda_pullup_en = GPIO_PULLUP_ENABLE,
                    .scl_pullup_en = GPIO_PULLUP_ENABLE,
                    .master.clk_speed = 100000};

我在最后一行出现错误。在主变量之前。

错误说

'.' 之前的预期主表达式 令牌

从这里我看到工会没有定义的名称,这可能是问题吗?

4

1 回答 1

1
.master = {
  .clk_speed = 100000,
}
于 2021-07-29T13:00:21.083 回答