MAX30102 模拟IIC读取程序(C语言)

采用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

  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值