请编写直接操作寄存器对STM32F103对I2C1进行配置使能
时间: 2023-05-31 20:02:25 浏览: 89
STM32F103实现I2C驱动【支持STM32F10X系列单片机】
以下是使用寄存器配置STM32F103的I2C1使能代码示例:
```c
#include "stm32f10x.h"
void I2C1_Init(void)
{
// 使能I2C1时钟
RCC->APB1ENR |= RCC_APB1ENR_I2C1EN;
// 配置I2C1引脚
RCC->APB2ENR |= RCC_APB2ENR_IOPBEN; // 使能GPIOB时钟
GPIOB->CRL |= GPIO_CRL_CNF6_1 | GPIO_CRL_MODE6_1; // 配置PB6为开漏输出,最大速度2MHz
GPIOB->CRL |= GPIO_CRL_CNF7_1 | GPIO_CRL_MODE7_1; // 配置PB7为开漏输出,最大速度2MHz
// 配置I2C1参数
I2C1->CR1 &= ~I2C_CR1_PE; // 禁止I2C1
I2C1->CR2 &= ~I2C_CR2_FREQ; // 清除时钟频率位
I2C1->CR2 |= 36; // 设置I2C1时钟频率为36MHz
I2C1->CCR &= ~I2C_CCR_FS; // 使用标准模式
I2C1->CCR &= ~I2C_CCR_CCR; // 清除时钟控制位
I2C1->CCR |= 180; // 设置时钟控制位,使得I2C1速率为100kHz
I2C1->TRISE &= ~I2C_TRISE_TRISE; // 清除上升时间位
I2C1->TRISE |= 37; // 设置上升时间位,使得I2C1速率为100kHz
// 使能I2C1
I2C1->CR1 |= I2C_CR1_PE;
}
```
这段代码将I2C1配置为标准模式下的100kHz速率。具体配置方法是:
1. 使能I2C1时钟。
2. 配置I2C1引脚为开漏输出模式。
3. 配置I2C1的时钟频率和速率,并使能I2C1。
注意:在使用I2C1之前,您可能需要先配置GPIO引脚和外设时钟配置。
阅读全文