蓝桥杯嵌入式STM32G431
EEPROM读写


最后读取的都是255,哪里出了问题呀
CubeMX把PA6,PA7引脚设成GPIO_Output
蓝桥杯嵌入式STM32G431
EEPROM读写


关注引自免费微信小程序:皆我百晓生
在蓝桥杯竞赛中使用STM32G431进行EEPROM读写操作时,如果最后读取的总是255,可能涉及以下多个方面的问题:
#include "stm32g4xx_hal.h"
#define EEPROM_ADDR 0xA0 // EEPROM的I2C地址
HAL_StatusTypeDef EEPROM_WriteByte(uint16_t mem_addr, uint8_t data) {
uint8_t write_data[2] = { (mem_addr >> 8) & 0xFF, mem_addr & 0xFF };
HAL_I2C_Master_Transmit(&hi2c1, EEPROM_ADDR << 1, write_data, 2, HAL_MAX_DELAY);
HAL_I2C_Master_Transmit(&hi2c1, EEPROM_ADDR << 1 | 1, &data, 1, HAL_MAX_DELAY);
return HAL_OK;
}
HAL_StatusTypeDef EEPROM_ReadByte(uint16_t mem_addr, uint8_t *pdata) {
uint8_t write_data[2] = { (mem_addr >> 8) & 0xFF, mem_addr & 0xFF };
HAL_I2C_Master_Transmit(&hi2c1, EEPROM_ADDR << 1, write_data, 2, HAL_MAX_DELAY);
HAL_StatusTypeDef status = HAL_I2C_Master_Receive(&hi2c1, EEPROM_ADDR << 1 | 1, pdata, 1, HAL_MAX_DELAY);
if(status == HAL_OK)
return HAL_OK;
else
return HAL_ERROR;
}
如果你提供更具体的硬件连接情况及代码片段,我可以进一步针对性地帮助你解决问题。