今天发现结构体赋值可以用宏定义的办法来赋值
typedef struct { I2C_TypeDef *port; /**< Peripheral port */ GPIO_Port_TypeDef sclPort; /**< SCL pin port number */ uint8_t sclPin; /**< SCL pin number */ GPIO_Port_TypeDef sdaPort; /**< SDA pin port number */ uint8_t sdaPin; /**< SDA pin number */ #if defined(_SILICON_LABS_32B_SERIES_0) uint8_t portLocation; /**< Port location */ #elif defined(_SILICON_LABS_32B_SERIES_1) uint8_t portLocationScl; /**< Port location of SCL signal */ uint8_t portLocationSda; /**< Port location of SDA signal */ #endif uint32_t i2cRefFreq; /**< I2C reference clock */ uint32_t i2cMaxFreq; /**< I2C max bus frequency to use */ I2C_ClockHLR_TypeDef i2cClhr; /**< Clock low/high ratio control */ } I2CSPM_Init_TypeDef;
1 #define I2CSPM_INIT_DEFAULT \ 2 { I2C0, /* Use I2C instance 0 */ \ 3 gpioPortC, /* SCL port */ \ 4 5, /* SCL pin */ \ 5 gpioPortC, /* SDA port */ \ 6 4, /* SDA pin */ \ 7 0, /* Location */ \ 8 0, /* Use currently configured reference clock */ \ 9 I2C_FREQ_STANDARD_MAX, /* Set to standard rate */ \ 10 i2cClockHLRStandard, /* Set to use 4:4 low/high duty cycle */ \ 11 }
这样定义后,结构体就可以这样赋值
I2CSPM_Init_TypeDef I2C_Init = I2CSPM_INIT_DEFAULT;