谢谢了,我现在用FLASH试了以下,但是为什么我的FLASH不写入呢?程序基本和EEPROM的一样,只是把寄存器名字改了,做整体擦除时芯片还会上锁。我是按照芯片资料给的顺序写的,寄存器也检查完成了FLASH动作,只是没有写入。不知道是什么原因。
我的程序是这样的:
void FLASH_WR(word data,volatile word* FLASH_Addr) {
if(!FCLKDIV_FDIVLD) FCLKDIV=0x4a;
FSTAT=0x30;
*FLASH_Addr=data;
// PPAGE=(FLASH_Addr>>16); Do not have to set between 4000-7fff
FCMD=0x20;
FSTAT_CBEIF=1;
if(FSTAT_PVIOL)FSTAT_PVIOL=1;
else if(FSTAT_ACCERR)FSTAT_ACCERR=1;
else if(!FSTAT_CBEIF){
while(!FSTAT_CCIF);
}
}
请教高手是什么原因??调用时是这样写的:FLASH_WR(a,(volatile word*)(0x4000)); |