首先I2C和SMBus是兼容的,亲测把初始化换成SMBus或者I2C都是可以通信的。
这几天老师因为工控机上SMBus接口长得好看一点。。。。。。。所以非要我搞SMBus的通信。。。。。。。其实旁边就是UART接口,就是接线麻烦一点。
反正他既然说了就搞呗,结果发现网上关于I2C用从机中断的资料巨少,就想着把代码po上来共享一下。
#include "IIC.h"
#include "delay.h"
#include "stm32f4xx_i2c.h"
#include "Exti.h"
//********接口定义*********************************************************//
//调用库函数将
//程序代码如下:
//************************************************************************//
void IIC_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //GPIO 结构体定义
I2C_InitTypeDef I2C_InitStructure; //I2C 结构体定义
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE); //I2C 时钟使能
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);
//RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
/* Configure and enable SI2CMASTER interrupt --------------------------------*/
//RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C1, ENABLE);
//RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C1, DISABLE);
//*I2C1-模式 配置*//
I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;