本帖最后由 戊戌变法 于 2019-11-13 08:48 编辑
首先 参考手册上的e-flash操作是需要 e-flash先完成解锁的,然后指令才有效果。
但是 目前经过我测试 e-flash中函数 存在不解锁但返回值为EFLASH_STATUS_SUCCESS情况
我建议官方的e-flash库函数 可以增加判断是否已经解锁了再返回值 不然根据这个e-falash函数返回值 用户就会做出错误判断。
uint16_t i = 0;
for(i=0; i<255; i++)
{
writedata = i+255;
readdata = 0;
}
for(i=255; i<512; i++)
{
writedata = i*2;
readdata = 0;
}
EFLASH_LockCtrl();
ret = EFLASH_PageProgram(0x08010000, writedata, 512);
if(ret == EFLASH_STATUS_SUCCESS)
{
printf("ok3\r\n");
}
ret = EFLASH_Read(0x08010000, readdata, 512);
if(ret == EFLASH_STATUS_SUCCESS)
{
printf("ok4\r\n");
ret = EFLASH_PageErase(0x08010000); ///<erase page
if(ret == EFLASH_STATUS_SUCCESS)
{
printf("ok5\r\n");
}
ret = EFLASH_Read(0x08010000, readdata, 512);
if(ret == EFLASH_STATUS_SUCCESS)
{
printf("ok6\r\n");
for(i=0; i<512; i++)
{
printf("readdata[%d] = %d\r\n",i, readdata );
}
}
while(1);
}
打印输出
ok3
ok4
ok5
ok6
这个程序是证明 EFLASH_LockCtrl(); eflash 函数返回值都为OK 不合理的情况
|