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 + -
显示快捷键?