在“eeprom.h”文件中的最下方可以看到对外的功能函数 我们首先需要将EE_Init()函数在主函数中调用初始化。剩下两个EE_ReadVariable( uint16_t VirtAddress, uint16_t* Data )和EE_WriteVariable( uint16_t VirtAddress, uint16_t Data )函数是我们将用到的FLASH读写函数。 这里需要注意这两个函数都有一个...
EE_Init(); 读出数据 if((0 == EE_ReadVariable(VirtAddVarTab[0], &Seat.SeatStorage[0])) && (0 == EE_ReadVariable(VirtAddVarTab[1], &Seat.SeatStorage[1])) && (0 == EE_ReadVariable(VirtAddVarTab[2], &Seat.SeatStorage[2]))) …… 查看原文:https://www.dianyuan.com/eestar/arti...
不确定是不是一个BUG,因为一般官方发布的源代码有BUG的机率较少。 库函数EE_Init的初始化中,有两个地方(大概150行和260行),以下是150行处代码: case RECEIVE_DATA: if (PageStatus1 == VALID_PAGE) /* Page0 receive, Page1 valid */ { /* Transfer data from Page1 to Page0 */ for (VarIdx =...
EE_Init(); 读出数据 if((0==EE_ReadVariable(VirtAddVarTab[0],&Seat.SeatStorage[0]))&&(0==EE_ReadVariable(VirtAddVarTab[1],&Seat.SeatStorage[1]))&&(0==EE_ReadVariable(VirtAddVarTab[2],&Seat.SeatStorage[2]))) …… 查看原文:https://www.dianyuan.com/eestar/article-1603.html...
2.1:在使用flash模块时,需要先解锁flash,即在调用EE_Init();之前,先解锁FLASH,否则读写不正常。 /*Unlock the Flash Program Erase controller*/HAL_FLASH_Unlock();/*EEPROM Init*/EE_Init(); 2.2: 重新定义#define NB_OF_VAR ((uint8_t)0x03),不同产品,保存的参数个数不同。
第3行 把CurWrAddress初始化为0,就是一个bug。修改后的代码, 把InitCurrWrAddress()函数放在了__EE_Init()之后,也就是说只要__EE_Init()函数用到了CurWrAddress,那么CurWrAddress = 0,有某种情况下,这是个灾难。 uint16_t EE_Init(void)
I2C_EE_Init(); /*读取数据标志位*/ I2C_EE_BufferRead(&cal_flag, 0, 1); if( cal_flag != 0xCD ) /*若标志等于0xcd,表示之前已有写入数据*/ { printf("\r\n没有检测到数据标志,FLASH没有存储数据,即将进行小数写入实验\r\n");
I2C_EE_Init(); printf("\r\n I2C外设(AT24C02)读写测试例程 \r\n"); I2C_Test(); while(1) { } } /** * @brief I2C(AT24C02)读写测试 * @param 无 * @retval 无 */ voidI2C_Test(void) { u16i; printf("写入的数据\n\r"); ...
void I2C_EE_Init(void) { I2C_GPIO_Config(); I2C_Mode_Config(); /* 根据头文件 i2c_ee. 14 h 中的定义来选择 EEPROM 要写入的地址 */ #ifdef EEPROM_Block0_ADDRESS /* 选择 EEPROM Block0 来写入 */ EEPROM_ADDRESS = EEPROM_Block0_ADDRESS; ...
I2C_EE_Init(); printf("rn这是一个I2C外设(AT24C02)读写测试例程rn"); I2C_Test(); while(1) { } } /** *@briefI2C(AT24C02)读写测试 *@param无 *@retval无 */ voidI2C_Test(void) { u16i; printf("写入的数据nr"); for(i=0;i<=255;i++)//填充缓冲 ...