• 大小: 3KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-15
  • 语言: 其他
  • 标签: IIC  I2C  IO  STM32  

资源简介

IIC 通讯代码,通过结构传递端口信息,一个函数体,多组IO口

资源截图

代码片段和文件信息

#include “bsp_iic.h“

//  在F4 168MHz  168*__nop()==1us
 void I2C_Delay()
{
__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();
__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();
__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();
__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();
__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();
__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();
__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();
__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();
__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();
__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();
}

I2C *I2C_1 *I2C_2 *I2C_3;
void I2C_GPIO_Config()  //端口初始化
{

I2C_1 = (I2C *)malloc(sizeof(I2C)); //MPU6050  HMC5883l
I2C_1->SCL_GPIOx = GPIOB;
I2C_1->SDA_GPIOx = GPIOB;
I2C_1->SCL_Pin = GPIO_Pin_8;
I2C_1->SDA_Pin = GPIO_Pin_9;

I2C_2 = (I2C *)malloc(sizeof(I2C));  //EEROM   气压计
I2C_2->SCL_GPIOx = GPIOB;
I2C_2->SDA_GPIOx = GPIOB;
I2C_2->SCL_Pin = GPIO_Pin_10;
I2C_2->SDA_Pin = GPIO_Pin_11;

I2C_3 = (I2C *)malloc(sizeof(I2C));  
I2C_3->SCL_GPIOx = GPIOA;
I2C_3->SDA_GPIOx = GPIOC;
I2C_3->SCL_Pin = GPIO_Pin_8;
I2C_3->SDA_Pin = GPIO_Pin_9;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOBENABLE);
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11;
GPIO_InitStruct.GPIO_OType =  GPIO_OType_OD;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_PuPd =  GPIO_PuPd_UP;
GPIO_InitStruct.GPIO_Speed =  GPIO_High_Speed;
GPIO_Init(GPIOB&GPIO_InitStruct);

I2C_Stop(I2C_1);
I2C_Stop(I2C_2);
I2C_Stop(I2C_3);

}

bool I2C_Start(I2C * i2c) //启动时序程序
{

SDA_H;
SCL_H;  //SCL  保持不变
I2C_Delay();
SDA_L;  //SDA  被拉低
I2C_Delay();
SCL_L;  //SCL  被拉低  钳住I2C总线,准备开始通讯
return true;
}
bool I2C_Stop(I2C * i2c)//停止时序
{
SCL_L;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       6724  2018-11-05 15:00  IIC多端口\bsp_iic.c

     文件       1446  2018-11-05 14:56  IIC多端口\bsp_iic.h

     目录          0  2018-11-05 18:25  IIC多端口

----------- ---------  ---------- -----  ----

                 8170                    3


评论

共有 条评论