我用的是从机接收中断模式来进行从机数据传输的。
这是我的初始化函数:
void i2c0_config(void)
{
i2c_rcu_config1();
i2c_config1();
//i2c_nvic_config();
//i2c_interrupt();
}
void i2c_rcu_config1(void)
{
rcu_periph_clock_enable(RCU_GPIOB);
rcu_periph_clock_enable(RCU_I2C0);
}
void i2c_config1(void)
{
gpio_af_set(GPIOB,GPIO_AF_1,GPIO_PIN_6);
gpio_af_set(GPIOB,GPIO_AF_1,GPIO_PIN_7);
gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_PULLUP,GPIO_PIN_6);
gpio_output_options_set(GPIOB, GPIO_OTYPE_OD, GPIO_OSPEED_50MHZ,GPIO_PIN_6);
gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_PULLUP,GPIO_PIN_7);
gpio_output_options_set(GPIOB, GPIO_OTYPE_OD, GPIO_OSPEED_50MHZ,GPIO_PIN_7);
i2c_clock_config(I2C0,100000,I2C_DTCY_2);
i2c_mode_addr_config(I2C0,I2C_I2CMODE_ENABLE,I2C_ADDFORMAT_7BITS,slaveaddress1);
nvic_priority_group_set(NVIC_PRIGROUP_PRE1_SUB3);
i2c_enable(I2C0);
i2c_ack_config(I2C0, I2C_ACK_ENABLE);
nvic_irq_enable(I2C0_EV_IRQn, 0, 4);
nvic_irq_enable(I2C0_ER_IRQn, 0, 1);
i2c_interrupt_enable(I2C0, I2C_INT_ERR);
i2c_interrupt_enable(I2C0, I2C_INT_EV);
i2c_interrupt_enable(I2C0, I2C_INT_BUF);
} |