RCC->AHBENR |= RCC_AHBENR_GPIOBEN; GPIOB->OTYPER = GPIOB->OTYPER | GPIO_OTYPER_OT_6 | GPIO_OTYPER_OT_7; GPIOB->AFR[0] = (GPIOB->AFR[0] & ~(GPIO_AFRL_AFRL6 | GPIO_AFRL_AFRL7)) | (1 << ( 6 * 4 )) | (1 << (7 * 4)); GPIOB->MODER = (GPIOB->MODER & ~(GPIO_MODER_MODER6 | GPIO_MODER_MODER7)) | (GPIO_MODER_MODER6_1 | GPIO_MODER_MODER7_1); RCC->APB1ENR |= RCC_APB1ENR_I2C1EN; RCC->CFGR3 |= RCC_CFGR3_I2C1SW; I2C1->TIMINGR = (uint32_t)0x00200000; I2C1->CR1 = I2C_CR1_GCEN | I2C_CR1_NOSTRETCH | I2C_CR1_PE | I2C_CR1_ADDRIE | I2C_CR1_TXIE | I2C_CR1_RXIE | I2C_CR1_TCIE | I2C_CR1_SBC; I2C1->OAR1 |= (uint32_t)(0x7F << 1); I2C1->OAR1 |= I2C_OAR1_OA1EN; NVIC_SetPriority(I2C1_IRQn, 0); NVIC_EnableIRQ(I2C1_IRQn); |
官方不是有例程代码和库文件么 可以参考看看 PE一般都是配置好前面的信息 最后才打开设备 有些配置需要在打开设备前配置好 |