пошаговый дебагер keil показал что не пишутся регистры CR1,CR2, SR1,SR2
функция инициализации
void I2C1_Config(void)
{
I2C_InitTypeDef I2C_InitStruct;
/* I2C1 clock enable */
RCC->AHB1ENR |=((uint32_t)0x00200000);
/* GPIOB clock enable */
RCC->AHB1ENR |=((uint32_t)0x00000002);
/* Connect I2C1 pins to AF4 ************************************************/
GPIOB->AFR[1] |= 5;//GPIOB8 -> SCL(AF5)
GPIOB->AFR[1] |= 5<<4;//GPIOB9 -> SDA(AF5)
/* Configure I2C1 GPIOs *****************************************************/
GPIOB->MODER &= 0xFFF0FFFF;
GPIOB->MODER |= 0x000A0000;//GPIOB8,9 ->AF
GPIOB->OTYPER |=0x30000;//Open drain
//GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
//GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
//GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
//GPIO_Init1(GPIOB, &GPIO_InitStructure);
/* Configure I2C1 ***********************************************************/
/* I2C DeInit */
RCC->APB1RSTR=((uint32_t)0x00200000);
/* Release I2C1 from reset state */
RCC->APB1RSTR &= ~((uint32_t)0x00200000);
/* Enable the I2C peripheral */
I2C1->CR1 |= 0x01;
/* Set the I2C structure parameters */
I2C_InitStruct.I2C_Mode = I2C_Mode_I2C;
I2C_InitStruct.I2C_DutyCycle = I2C_DutyCycle_2;
I2C_InitStruct.I2C_OwnAddress1 = 0xFE;
I2C_InitStruct.I2C_Ack = I2C_Ack_Enable;
I2C_InitStruct.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
I2C_InitStruct.I2C_ClockSpeed = 30000;
/* Initialize the I2C peripheral w/ selected parameters */
I2C_Init(I2C1, &I2C_InitStruct);
}
функции использую стандартные библиотечные