пошаговый дебагер 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); } функции использую стандартные библиотечные
|