在线时间1 小时
UID1759864
注册时间2010-11-17
NXP金币0
该用户从未签到
注册会员

- 积分
- 53
- 最后登录
- 2019-11-24
|
求助论坛的各位大侠,高手。我在操作DT256的Flash时,单片机总是复位。在擦除Flash的时候不会出现复位的情况,当将数据写入Flash以后,单片机就会复位,不知道是什么原因引起的,希望各位大侠能够指教一二!
下面是Flash操作的代码
INT8U Flash_Cmd(INT8U page,INT16U logicAddress,INT16U* pDataPtr,INT16U dataCounter,INT8U command)
{
OS_CPU_SR cpu_sr;
volatile INT8U rgPage;
INT8U err= FLASH_OK;
OS_ENTER_CRITICAL();
DCMFix();
rgPage= PPAGE;//保存当前页寄存器值
if (dataCounter)
{
INT16U* address=(INT16U*)logicAddress;
//取得FLASH的第几块
if(page==0) FCNFG=0;
else FCNFG = 0x0F-(page>>4);
PPAGE = page;//取得页值
FSTAT = 0x30; //write a 1 to FACCERR and PVIOL to clear
do
{
*address++= *pDataPtr++;//按字的写入操作
FCMD = command; //set command type.
FSTAT= 0x80;//写入缓冲区
if (FSTAT&0x30) //如果写的过程中有错误,则恢复页寄存器值,并出错返回
{
err= FLASH_OP_ERROR;
goto RESTOR;
}
while(!FSTAT_CBEIF);//缓冲区空
}while (--dataCounter);
}
while(!FSTAT_CCIF);//FLASH写入完成
RESTOR:
PPAGE = rgPage;//恢复页寄存器值
OS_EXIT_CRITICAL();
return err;
}
|
|