这一段程序本身没有问题,出现的问题在于选择MCLK作为输入源时,TIMEA也用MCLK作为输入源了,定时为6。25ms,所以对FLASH连续操作6.25ms时程序跑飞。后来改成TIMEA用ACLK作为输入源就OK了。
以后大家一定注意选择好时钟输入源~!
/***************************************************************************
段擦除
adr:要擦除的段内的任一地址
***************************************************************************/
void FlashErase(Uint adr)
{
Uchar *p0;
FCTL2=FWKEY+FSSEL_1+FN3+FN4;//选择MCLK作为输入源
FCTL3=FWKEY;
while(FlashBusy()==1) //等待FLASH存储器完成操作
;
FCTL1=FWKEY+ERASE;
p0=(Uchar *)adr;
*p0=0; //向段内地址任意写,启动擦除操作
while(FlashBusy()==1) //等待FLASH存储器完成操作
;
FCTL1=FWKEY;
FCTL3=FWKEY+LOCK;
} |