# 初始化(千万别忘记!!,加在Lcd_Init之后)

HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
LCD_Init();
LCD_Clear(Black);
LCD_SetBackColor(Black);
LCD_SetTextColor(White);

I2CInit();//important

int a,b,c,d;
if(e2prom_read(4)==0x11)//断电以后检测依然保存数据
{
	a=e2prom_read(0);
	b=e2prom_read(1);
	c=e2prom_read(2);
	d=e2prom_read(3);
}
else//第一次检测,置零,然后把数据存入e2prom,如果是浮点数,则x10,再/10转换
{
    e2prom_write(0,0);
	e2prom_write(1,0);
	e2prom_write(2,0);
	e2prom_write(3,0);
	
	e2prom_write(4,0x11);//标志位
}

# 写入

void e2prom_write(uint8_t adr,uint8_t data)
{
	I2CStart();
	I2CSendByte(0xA0);
	I2CWaitAck();
	I2CSendByte(adr);
	I2CWaitAck();
	I2CSendByte(data);
	I2CWaitAck();
	I2CStop();
	HAL_Delay(20);//掩饰别忘记了

}

# 读取

uint8_t e2prom_read(uint8_t adr)
{
	I2CStart();
	I2CSendByte(0xA0);
	I2CWaitAck();
	I2CSendByte(adr);
	I2CWaitAck();
	
	I2CStart();
	I2CSendByte(0xA1);
	I2CWaitAck();
	uint8_t data = I2CReceiveByte();
	I2CSendNotAck();//是I2CSendNotAck,不是I2CSendAck()!!!
	I2CStop();

	
	return data;

}
void write_resistor(uint8_t data)
{   
	I2CStart();
	I2CSendByte(0x5E);  
	I2CWaitAck();
	
	I2CSendByte(data);  
	I2CWaitAck();
	I2CStop();
}
uint8_t read_resistor(void)
{   
	I2CStart();
	I2CSendByte(0x5F);  
	I2CWaitAck();
	
	uint8_t value = I2CReceiveByte();
	I2CSendNotAck();
	I2CStop();

	return value;
}
更新于

请我喝[茶]~( ̄▽ ̄)~*

曾阿牛 微信支付

微信支付

曾阿牛 支付宝

支付宝