1.Cube配置
本例程使用软件I2C,故此无需配置,对硬件I2C感兴趣的可以自行查阅
2.代码编写
参考AT24C02手册P11
在I2C.c文件里写两个函数
void eeprom_write(uint8_t addr,uint8_t dat)
{
I2CStart();
I2CSendByte(0xa0);
I2CWaitAck();
I2CSendByte(addr);
I2CWaitAck();
I2CSendByte(dat);
I2CWaitAck();
I2CStop();
}
uint8_t eeprom_read(uint8_t addr)
{
uint8_t rec;
I2CStart();
I2CSendByte(0xa0);
I2CWaitAck();
I2CSendByte(addr);
I2CWaitAck();
I2CStop();
I2CStart();
I2CSendByte(0xa1);
I2CWaitAck();
rec=I2CReceiveByte();
I2CSendNotAck();
I2CStop();
return rec;
}
然后在I2C.h里声明这两函数,在my_main.c的setup()函数初始化
I2CInit();
eep_num=eeprom_read(8);
在loop()函数里测试
if(key[1].short_flag==1)
{
eep_num+=1;
eeprom_write(8,eep_num);
key[1].short_flag=0;
}
按键1按下变量自增1且复位后值不变