📄 flash_m.c
字号:
extern unsigned int R_TESTBuffer;
extern unsigned int SP_Flash_ReadType();
extern unsigned int SP_Flash_ReadStatus();
extern void SP_ClearWatchDog();
extern void SP_Flash_Initial();
extern void SP_Flash_ReadBuffer(unsigned long,unsigned int*,unsigned int);
extern void SP_Flash_WritePage(unsigned long,unsigned int*);
extern void SP_Flash_EraseBlock(unsigned long);
unsigned int SP_Flash_Format(unsigned long R_Address,unsigned int R_StartBlock,unsigned int* R_Point,unsigned int R_Count);
void SP_Test_Flash()
{
unsigned int i,j;
unsigned int* R_Point;
unsigned long R_Address;
SP_Flash_ReadBuffer(0,&i,1);
if(i==0x2367)
return;
SP_Flash_EraseBlock(0);
j=0;
while(j!=0x6000)
{
j=SP_Flash_ReadStatus();
j&=0x6000;
}
R_Point=&R_TESTBuffer;
*R_Point=0x2367;
R_Point++;
i=SP_Flash_Format(0x20000,1,R_Point,1023);
R_Point=&R_TESTBuffer;
SP_Flash_WritePage(0,R_Point);
j=0;
while(j!=0x6000)
{
j=SP_Flash_ReadStatus();
j&=0x6000;
}
R_Point=&R_TESTBuffer;
for(j=0;j<1024;j++)
{
*R_Point=0;
R_Point++;
}
R_Point=&R_TESTBuffer;
R_Address=(unsigned long) i;
R_Address*=0x20000;
j=2048-i;
i=SP_Flash_Format(R_Address,i,R_Point,j);
SP_Flash_WritePage(0x0800,R_Point);
j=0;
while(j!=0x6000)
{
j=SP_Flash_ReadStatus();
j&=0x6000;
}
}
unsigned int SP_Flash_Format(unsigned long R_Address,unsigned int R_StartBlock,unsigned int* R_Point,unsigned int R_Count)
{
unsigned int i,j,k;
j=R_StartBlock;
k=0;
while(1)
{
SP_ClearWatchDog();
SP_Flash_EraseBlock(R_Address);
i=0x0000;
while(i!=0x6000)
{
i=SP_Flash_ReadStatus();
i&=0x6000;
}
i=SP_Flash_ReadStatus();
i&=0x0100;
if(i==0)
{
*R_Point=j;
R_Point++;
k++;
}
j++;
R_Address+=0x00020000;
if(k>=R_Count)
break;
if(j>=2048)
break;
}
return j;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -