有关Flash擦除问题已解决,注意选择好时钟源

楼主
有关Flash擦除问题已解决,注意选择好时钟源
这一段程序本身没有问题,出现的问题在于选择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;
}
1楼
谢谢Politician的经历之谈和实例。
2楼
呵呵。。。。
资源共享啊,这都是大家的帮忙下完成的。
以后多多交流。
3楼
对FLASH 操作 的时候一般要关中断的 ,就是为了防止象你上面所说的情况!!
4楼
要关中断的
5楼
1系列和以前的4系列,写FLASH和擦除超作需要关闭中断。2系列不用
FLASH 操作的时钟不要超过500K,每个芯片的手册上有具体的数据

电脑版 Page created in 0.0780 seconds width 2 queries.