Vistra获美国能源部贷款以提升核电站产能
2026/10/11 4:39:44
源码仓库: 码云仓库
Windows10STM32CubeMXVersion 5.2.0Keil5(MDK5)Version 5.28.0.0本例程主要讲解如何使用硬件IIC读写24C02
基础配置过程请参考STM32CubeMx(Keil5)开发之路—配置第一个项目
根据原理图可知需要的配置的是IIC2
/* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */ #define EE_TYPE 255 //类型 #define ADDR_24LCxx_Write 0xA0 //写指令IIC地址 #define ADDR_24LCxx_Read 0xA1 //读指令IIC地址 #define BufferSize 10 //读写大小(注意不要设置太大) uint8_t WriteBuffer[BufferSize] = {0,1,2,3,4,5,6,7,8,9}; //需要写的数据在WriteBuffer当中 uint8_t ReadBuffer[BufferSize]; //读出来的数据放进ReadBuffer当中 int i = 0; /* 调试打印 */ int fputc(int ch, FILE *f) { HAL_UART_Transmit(&huart1, (uint8_t *)&ch,1, 0xFFFF); return ch; } /* USER CODE END 0 */int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_USART1_UART_Init(); MX_I2C2_Init(); /* USER CODE BEGIN 2 */ /* 写数据 */ HAL_Delay(5); if(HAL_I2C_Mem_Write(&hi2c2, ADDR_24LCxx_Write, 0, I2C_MEMADD_SIZE_8BIT,WriteBuffer,BufferSize, 0x10) != HAL_OK) { printf("Write fail!\n"); } /* 读数据 */ HAL_Delay(5); if(HAL_I2C_Mem_Read(&hi2c2, ADDR_24LCxx_Read, 0, I2C_MEMADD_SIZE_8BIT,ReadBuffer,BufferSize, 0x10) != HAL_OK) { printf("Read fail!\n"); } /* 测试输出 */ for(i=0; i<BufferSize; i++) { printf("0x%02X ",ReadBuffer[i]); } /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ }IIC在实际应用过程非常广泛,是嵌入式需了解的协议之一,所以一定要好好理解!