第二个问题,还是与FLASH的分块有关。DP256的FLASH分为4块,那么它的控制和状态寄存器也相应地分成4组,需要通过FCNFG中的BKSEL位来选择对哪一块进行操作。而且,如果其中任意一组的状态寄存器中有错误,都无法对FLASH进行操作。所以在擦写操作之前,要加这么一段代码,对所有4组状态寄存器进行检测和清零:
FCNFG_BKSEL = 0;
while(FSTAT & 0x30) FSTAT |= 0x30;
FCNFG_BKSEL = 1;
while(FSTAT & 0x30) FSTAT |= 0x30;
FCNFG_BKSEL = 2;
while(FSTAT & 0x30) FSTAT |= 0x30;
FCNFG_BKSEL = 3;
while(FSTAT & 0x30) FSTAT |= 0x30;
FCNFG_BKSEL = 0;
|