STM32Cube MX 下IIC的配置与使用--GPIO模拟

本文详细阐述了如何在STM32F107VCT6开发板上利用STM32Cube MX配置GPIO模拟IIC,并通过与板载EEPROM的读写操作来测试IIC驱动程序。内容包括STM32Cube MX的配置步骤、GPIO初始化、模拟IIC驱动程序源代码以及针对AT24C02的驱动实现。
摘要由CSDN通过智能技术生成

本文介绍了在STM32下的IIC的基本使用方法,通过对板载具备IIC接口EEPROM的读写,完成对IIC驱动程序的测试。

硬件平台:STM32F107VCT6开发板

软件平台:STM32Cube MX + MDK5.22


1. 进行STM32Cube MX的配置


配置PB6和PB7为输出模式,同时配置了USART1进行串口调试使用。然后生成工程。


2. 打开工程,可以看到GPIO的初始化状态



3. 模拟IIC驱动程序源文件代码

/**
  * @file  iic_dup.c
  * @brief IIC上层程序
  * @par   date        version    author    remarks
  *        2016-03-21  v1.0       zbt       初次创建
  *
  */

/** 头文件包含区 ------------------------------------------------ */
#include "iic_dup.h"

/** 私有宏(类型定义) -------------------------------------------- */ 
#define IIC1_SCL(pin_status)        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, pin_status);
#define IIC1_SDA(pin_status)        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, pin_status);
#define IIC1_SCL_IS_HIGH()          (HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_6) != GPIO_PIN_RESET)
#define IIC1_SDA_IS_HIGH()          (HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_7) != GPIO_PIN_RESET)

/** 私有变量 --------------------------------------------------- */


/** 外部变量 --------------------------------------------------- */

/** 私有函数原型 ----------------------------------------------- */
static void iic_delay(void);

/** 公有函数 --------------------------------------------------- */
/**
  * @brief  IIC启动
  * @param  None
  * @retval None
  * @note   当SCL处于高电平状态时,SDA出现一个下降沿
            即产生IIC启动信号
  */
void iic_start(void)
{
    IIC1_SCL(GPIO_PIN_SET);
    /** SDA产生一个下降沿 */
    IIC1_SDA(GPIO_PIN_SET);
    iic_delay(); 
    
    IIC1_SDA(GPIO_PIN_RESET);
    iic_delay(); 
    IIC1_SCL(GPIO_PIN_RESET);   /**< 拉低准备发送数据 */
    iic_delay();   
}

/**
  * @brief  IIC停止
  * @param  None
  * @retval None
  * @note   当SCL处于高电平状态时,SDA出现一个上升沿
            即产生IIC停止信号
  */
void iic_stop(void)
{
    IIC1_SCL(GPIO_PIN_RESET);
    iic_delay();
    /** SDA产生一个上升沿 */
    IIC1_SDA(GPIO_PIN_RESET);
    iic_delay();
    
    IIC1_SCL(GPIO_PIN_SET);
    iic_delay();
    IIC1_SDA(GPIO_PIN_SET);
    iic
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值