Эта строка кажется проблематичной.
GPIOA->AFR[1] = GPIO_Aternate_Function_I2C1;
Вы должны установить значения AFSEL9 и AFSEL10, если выводы I2C равны 9 и 10. Но вы устанавливаете AFSEL8 (который является самым низким в AFR [1]),и очистите других.
Этот код должен делать следующее:
GPIOA->AFR[1] = GPIO_Aternate_Function_I2C1 * 0x00000110;