GD32E230C开发板上有一个EEPROM,通过I2C连接进行读写操作,相关的文件主要是i2c.c和at24cxx.c及相应的头文件,从相应的Soft_Drive文件夹将这些文件复制过来。i2c.c内主要有gpio_config()和i2c_config()两个函数,在主函数开始时调用这两个函数进行I2C的初始化,I2C就可以使用了。at24cxx.c内主要使用的是i2c_eeprom_init()、eeprom_page_write()和eeprom_buffer_read()三个函数,前者是初始化函数,后者分别是写和读eeprom的函数。
我的实验是利用eeprom来保存和恢复之前做的简易日期时间数据,写和读的函数如下:
void date_write(void)
{
data_buff[0] = year >> 8;
data_buff[1] = year & 0x00FF;
data_buff[2] = mon;
data_buff[3] = day;
data_buff[5] = hour;
data_buff[6] = minu;
data_buff[7] = seco;
eeprom_page_write(data_buff,0,8);//将日期时间写入EEPROM
}
void date_read(void)
{
eeprom_buffer_read(data_buff,0,8);
year = data_buff[0] * 100 + data_buff[1];
if(year < 1000) year = 2019;
mon = data_buff[2];
day = data_buff[3];
hour = data_buff[5];
minu = data_buff[6];
seco = data_buff[7];
}
复制代码
读操作用在主函数的主循环之前,读取之前保存的日期时间数据。写操作则用在每小时变动时和调整了日期时间之后。经测试读写操作正常,这样开发板上电后可以从上次保存的日期时间起继续计时,若需调整也用不着年月日时分全部重新调整。
当然这只是实验,并不实用,真正实用还是需要使用相应的计时模块。下图是显示界面:
|