IIC.h文件
#ifndef __BSP_IIC_H__
#define __BSP_IIC_H__
#include "stm32f10x_conf.h"
#define PIN_IIC_SCL GPIO_Pin_6
#define PIN_IIC_SDA GPIO_Pin_7
#define IIC_IOPORT GPIOB
#define IIC_SDA_L GPIO_ResetBits(IIC_IOPORT, PIN_IIC_SDA)
#define IIC_SDA_H GPIO_SetBits(IIC_IOPORT, PIN_IIC_SDA)
#define IIC_SCL_L GPIO_ResetBits(IIC_IOPORT, PIN_IIC_SCL)
#define IIC_SCL_H GPIO_SetBits(IIC_IOPORT, PIN_IIC_SCL)
#define IIC_OPR_READ 1 //读操作
#define IIC_OPR_WRITE 0 //写操作
#define IIC_STATE_IDLE 0 //空闲状态
#define IIC_STATE_STARTED 1 //收到开始信号
#define IIC_STATE_STOPED 2 //收到停止信号
#define IIC_STATE_SENT_ADDR 3 //已经发送地址
#define IIC_STATE_RECVING 4 //收数据中
#define IIC_STATE_SENDING 5 //发数据中
#define IIC_STATE_REV_NACK 6 //收到NACK
#define IIC_STATE_REV_ACK 7 //收到ACK
#define IIC_WAIT_ACK 8 //等待ACK
#define IIC_READY_SEND_ACK 9 //准备发送ACK
typedef struct
{
unsigned char IIC_SDA_State;
unsigned char IIC_SCL_State;
}__IIC_SDASCL_STATE;
typedef struct
{
unsigned char IIC_BUS_State;
unsigned char TranfDir;
unsigned char ShiftData;
unsigned char SlaveAddr;
unsigned char RData;
unsigned char* pWBuf;
unsigned char* pRBuf;
int RecvBufSize;
int RecvBytes;
int WriteBytes;
int RisingEdgeTimes;
__IIC_SDASCL_STATE SDASCL_State[2];
}__IIC_SLAVE_DEV_INFO;
void IIC_Configeration(char isMaster,unsigned char SelfAddr );
void IIC_Start(void);
void IIC_Stop(void);
unsigned char IIC_WaitACK(void);
void IIC_AnswerACK(void);
void IIC_NACK(void);
void IIC_SendOneByte(unsigned char Data);
int IIC_SendBytes(unsigned char SlaveAddr,unsigned char* Data,int Bytes);
unsigned char IIC_ReadOneByte(void);
int IIC_ReadBytes(unsigned char SlaveAddr,unsigned char* Data,int Bytes);
void IIC_Delay(void);
void IIC_SDA_Out(void);
void IIC_SDA_In(void);
void IIC_SCL_Out(