Gast
#4328702
Hallo, ich versuche gerade eine I2C Schnittstelle auf einen STM32 Demoboard einzurichten, leider passiert, wenn ich nicht alle Variablen wie zb GeneralCallMode nicht initialisiere, dann springt das Programm immer nach der Überprüfung (assert_param(IS_I2C_GENERAL_CALL(hi2c->Init.GeneralCallMode));) in die assert_failed (uint8_t* file, uint32_t line) Funktion. Ich verstehe nicht warum man alle Variablen initialisieren muss, denn die Register haben ja auch Reset Werte? [code]I2C_HandleTypeDef i2c1Handle; i2c1Handle.Instance = I2C1; i2c1Handle.Init.ClockSpeed = 100000; // 100kHz i2c1Handle.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; i2c1Handle.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; //i2c1Handle.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; i2c1Handle.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; i2c1Handle.Init.OwnAddress1 = 0x09; i2c1Handle.Init.DutyCycle = I2C_DUTYCYCLE_2; i2c1Handle.Init.OwnAddress2 = 0x32; HAL_I2C_Init(&i2c1Handle);[code] Ich hoffe mir kann jemand dieses Problem erklären.