采用STM32F427 读取MAX30102程序 ,端口PB5 PB6
#include "stm32F4xx_hal.h"
#include <STDINT.H>
#include "IIC.H"
#include "stm32F4xx.h" // Device header
//#define IIC_SCL_PORT GPIOB
//#define IIC_SCL_PIN GPIO_PIN_6
//#define IIC_SDA_PORT GPIOB
//#define IIC_SDA_PIN GPIO_PIN_5
void IIC_Delay(void)
{
uint32_t i;
for(i=0;i<75;i++)
{
}
}
void IIC_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.Pin = IIC_SCL_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(IIC_SCL_PORT, &GPIO_InitStruct);
GPIO_InitStruct.Pin = IIC_SDA_PIN;
HAL_GPIO_Init(IIC_SDA_PORT, &GPIO_InitStruct);
HAL_GPIO_WritePin(IIC_SCL_PORT,IIC_SCL_PIN,GPIO_PIN_SET);
HAL_GPIO_WritePin(IIC_SDA_PORT,IIC_SDA_PIN,GPIO_PIN_SET);
}
void SDA_IN(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.Pin = IIC_SDA_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
//GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(IIC_SCL_PORT, &GPIO_InitStruct);
}
void SDA_OUT(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.Pin = IIC_SDA_PIN;
// GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD ;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(IIC_SCL_PORT, &GPIO_InitStruct);
}
void IIC_Start(void)
{
SDA_OUT();
// Set_IIC_SDA;
// Set_IIC_SCL;
HAL_GPIO_WritePin(IIC_SDA_PORT,IIC_SDA_PIN,GPIO_PIN_SET);
HAL_GPIO_WritePin(IIC_SCL_PORT,IIC_SCL_PIN,GPIO_PIN_SET);
IIC_Delay();
// Clr_IIC_SDA;//START:when CLK is high,DATA change form high to low
HAL_GPIO_WritePin(IIC_SDA_PORT,IIC_SDA_PIN,GPIO_PIN_RESET);
IIC_Delay();
//Clr_IIC_SCL;//ǯסI2C×ÜÏߣ¬×¼±¸·¢ËÍ»ò½ÓÊÕÊý¾Ý
HAL_GPIO_WritePin(IIC_SCL_PORT,IIC_SCL_PIN,GPIO_PIN_RESET);
}
void IIC_Stop(void)
{
SDA_OUT();
// Clr_IIC_SCL;
// Clr_IIC_SDA;//STOP:when CLK is high DATA change form low to high
HAL_GPIO_WritePin(IIC_SCL_PORT,IIC_SCL_PIN,GPIO_PIN_RESET);
HAL_GPIO_WritePin(IIC_SDA_PORT,IIC_SDA_PIN,GPIO_PIN_RESE