flash.c
来自「flash 的读写操作,对于目前主流的flash开发都有启发!」· C语言 代码 · 共 69 行
C
69 行
unsigned long int Page=0;
//**********************************************************************
// @Function void read_FSR_Busy(void)
//----------------------------------------------------------------------
// @Description This function read FSR Register
//----------------------------------------------------------------------
// @Returnvalue none
//**********************************************************************
void Read_FSR_Busy(void)
{
unsigned int far *Flash_Register = (unsigned int far *) 0xFFF000;
unsigned int Register;
Register = *Flash_Register;
while(Register & 0x0001)
{
Register = *Flash_Register;
}
}
//**********************************************************************
// @Function int read_sequence_error(void)
//----------------------------------------------------------------------
// @Description This function detects sequence errors
//----------------------------------------------------------------------
// @Returnvalue Error yes/no
//**********************************************************************
int Read_sequence_error(void)
{
unsigned int far *Flash_Register = (unsigned int far *) 0xFFF000;
unsigned int Register;
Register = *Flash_Register;
if(Register & 0x0040)
{
return(FALSE);
}
else
return(OK);
}
//**********************************************************************
// @Function int Erase_sector (unsigned long int sector)
//----------------------------------------------------------------------
// @Description This function erases one sector
//----------------------------------------------------------------------
// @Parameter Sector start address
//----------------------------------------------------------------------
// @Returnvalue Success
//----------------------------------------------------------------------
// @Parameters any constant or register value
//**********************************************************************
int Erase_sector (unsigned long int sector)
{
unsigned int far *Flash_Command_1 = (unsigned int far *) 0x0c000AA;
unsigned int far *Flash_Command_2 = (unsigned int far *) 0x0c00054;
unsigned int far *Flash_Command_3 = (unsigned int far *) sector;
//command sequence
*Flash_Command_1 = 0x0080;
*Flash_Command_2 = 0x00AA;
*Flash_Command_3 = 0x0033;
Read_FSR_Busy();
return (Read_sequence_error());
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?