SCL_GPIO_CLK_ENABLE() do{ __HAL_RCC_GPIOB_CLK_ENABLE(); }while(0)#define IIC_SDA_GPIO...
#define IIC_SCL_GPIO_CLK_ENABLE() do{ __HAL_RCC_GPIOB_CLK_ENABLE(); }while(0) /* PB口时钟使能 */ #define IIC_SDA_GPIO_PORT GPIOB #define IIC_SDA_GPIO_PIN GPIO_PIN_3 #define IIC_SDA_GPIO_CLK_ENABLE() do{ __HAL_RCC_GPIOB_CLK_ENABLE(); }while(0) /* PB口时钟使能 */ ...
1)使能IIC的SCL和SDA对应的GPIO时钟。 本实验中IIC使用的SCL和SDA分别是PB10和PB11,因此需要先使能GPIOB的时钟,代码如下: __HAL_RCC_GPIOB_CLK_ENABLE(); 2)设置对应GPIO工作模式(SCL推挽输出 SDA开漏输出) SDA线的GPIO模式使用开漏输出模式(硬件已接外部上拉电阻,也可以用内部的上拉电阻),而SCL线的GPIO模式...
EEPROM_I2C_APBxClkCmd(EEPROM_I2C_CLK, ENABLE); // I2C的引脚配置为复用开漏输出 GPIO_InitStruct.GPIO_Pin = EPROM_I2C_SCL_GPIO_PIN; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_OD; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(EPROM_I2C_SCL_GPIO_PORT, &GPIO_InitStruct); GPIO...
6.在main.c中实现IIC通信 /* USER CODE BEGIN PV */uint8_t rx_buf[10]={0};uint8_t tx_buf[10]={0};/* USER CODE END PV *//* USER CODE BEGIN 2 */__HAL_RCC_GPIOC_CLK_ENABLE();printf("---
GPIO_Init(GPIOB, &GPIO_InitStructure);// 初始化PB7:SDA (3)初始化IIC工作模式 /* I2C 配置 */I2C_InitStructure.I2C_Mode=I2C_Mode_I2C;//I2C模式 */I2C_InitStructure.I2C_DutyCycle=I2C_DutyCycle_2;// SCL 时钟线的占空比I2C_InitStructure.I2C_OwnAddress1=I2C_OWN_ADDRESS7;// 从机时,自身器件...
IIC总线有两条总线线路,一条是串行数据线(SDA),一条是串行时钟线(SCL)。SDA负责数据传输,SCL负责数据传输的时钟同步。IIC设备通过这两条总线连接到处理器的IIC总线控制器上。一种典型的设备连接如图: 与其他总线相比,IIC总线有很多重要的特点。在选择一种设备来完成特定功能时,这些特点是选择IIC设备的重要依据。
#ifndef_SOFTI2C1_H#define_SOFTI2C1_H#include"main.h"#include"DELAY/delay.h"#include"softi2c_common.h"// *** configuration start ***#defineSOFTI2C1_SCL_CLKEN() __HAL_RCC_GPIOB_CLK_ENABLE()#defineSOFTI2C1_SDA_CLKEN() __HAL_RCC_GPIOB_CLK_ENABLE()#defineSOFTI2C1_SCL_GPIO GPIOB...
而时钟线SCL一直是输出的,所以就没有数据线SDA麻烦了。 //初始化IIC void IIC_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE );//使能GPIOB时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7; ...
#define GPIOI_ODR_Addr (GPIOI_BASE+20) //0x40022014 #define GPIOJ_ODR_ADDr (GPIOJ_BASE+20) //0x40022414 #define GPIOK_ODR_ADDr (GPIOK_BASE+20) //0x40022814 #define GPIOA_IDR_Addr (GPIOA_BASE+16) //0x40020010 #define GPIOB_IDR_Addr (GPIOB_BASE+16) //0x40020410 ...