📄 flash.c
字号:
/****************************************Copyright (c)**************************************************
** 广州周立功单片机发展有限公司
** 研 究 所
** ARM开发组
**
** http://www.zlgmcu.com
**
**--------------文件信息--------------------------------------------------------------------------------
** 文 件 名: flash.c
** 创 建 人: 甘达
** 最后修改日期: 2005年10月11日
** 描 述: 39VF1601编程接口程序包
**
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 甘达
** 版 本: V1.0
** 日 期: 2005年10月11日
** 描 述: 原始版本
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人:
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#include "config.h"
uint32 FLASH_WordWrite(uint32 addr, uint16 data)
{ uint16 temp1, temp2;
CPU_IOWR_16(FLASH_BASEADDRESS+(0x5555<<1), 0xaaaa);
CPU_IOWR_16(FLASH_BASEADDRESS+(0x2aaa<<1), 0x5555);
CPU_IOWR_16(FLASH_BASEADDRESS+(0x5555<<1), 0xa0a0);
CPU_IOWR_16(addr, data);
while (1)
{
temp1 = CPU_IORD_16(addr);
temp2 = CPU_IORD_16(addr);
if ( temp1==temp2 )
{
if (data != CPU_IORD_16(addr) )
{
return FALSE;
}
else
{
return TRUE;
}
}
}
return FALSE;
}
uint32 FLASH_ChipErase(void)
{
CPU_IOWR_16(FLASH_BASEADDRESS+(0x5555<<1), 0xaaaa);
CPU_IOWR_16(FLASH_BASEADDRESS+(0x2aaa<<1), 0x5555);
CPU_IOWR_16(FLASH_BASEADDRESS+(0x5555<<1), 0x8080);
CPU_IOWR_16(FLASH_BASEADDRESS+(0x5555<<1), 0xaaaa);
CPU_IOWR_16(FLASH_BASEADDRESS+(0x2aaa<<1), 0x5555);
CPU_IOWR_16(FLASH_BASEADDRESS+(0x5555<<1), 0x1010);
while (1)
{
if ( CPU_IORD_16(FLASH_BASEADDRESS)==CPU_IORD_16(FLASH_BASEADDRESS) )
{
if ( 0xffff!=CPU_IORD_16(FLASH_BASEADDRESS) )
{
return FALSE;
}
else
{
return TRUE;
}
}
}
return FALSE;
}
uint32 FLASH_SectorErase(uint32 index)
{
CPU_IOWR_16(FLASH_BASEADDRESS+0x5555, 0xaa);
CPU_IOWR_16(FLASH_BASEADDRESS+0x2aaa, 0x55);
CPU_IOWR_16(FLASH_BASEADDRESS+0x5555, 0x80);
CPU_IOWR_16(FLASH_BASEADDRESS+0x5555, 0xaa);
CPU_IOWR_16(FLASH_BASEADDRESS+0x2aaa, 0x55);
CPU_IOWR_16(FLASH_BASEADDRESS+(index<<11), 0x30);
while (1)
{
if ( CPU_IORD_16(FLASH_BASEADDRESS)==CPU_IORD_16(FLASH_BASEADDRESS) )
{
if ( 0xffff!=CPU_IORD_16(FLASH_BASEADDRESS) )
{
return FALSE;
}
else
{
return TRUE;
}
}
}
return FALSE;
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -