TI中文支持网
TI专业的中文技术问题搜集分享网站

如果MSP430的某个地址上的Flash坏了,BUSY会是什么?

现在产品使用的是MSP430F4152,因为刚开始没有考虑那么全面 ,产品已经量产了安装了,数据存储用的是以下的代码:

void WaitForEnable()
{while((FCTL3 & BUSY) == BUSY);//Busy
}

void WriteFlash(unsigned int Addr,unsigned char *Data,unsigned char DataLend)
{
	WDTCTL = WDTPW+WDTHOLD;char i;char *FlashPtr = (char *)Addr;// Segment  pointerFCTL1 = FWKEY + WRT;// Set WRT bit for write operationFCTL3 = FWKEY;// Clear Lock bit_DINT();for(i=0;i<DataLend;i++){
	*FlashPtr = *Data;// Save Data
	WaitForEnable();//Busy
	*FlashPtr++;Data++;}_EINT();FCTL1 = FWKEY;// Clear WRT bitFCTL3 = FWKEY + LOCK;// Set LOCK bitWDTCTL = WDT_ARST_1000;//开一秒看门狗

}

如果MCU的某一地址的flash坏了 是否会导致

while((FCTL3 & BUSY) == BUSY);//Busy 

无限等待吗?
gaoyang9992006:

是有这个可能,因此在设计软件的时候,是不建议设置这种可能无限等待的while的。你可以使用逻辑运算与,包含一个计时的变量,当等待到计时变量为假的时候自动跳过这个检测。

Andy He:

回复 gaoyang9992006:

同意楼上的观点.

有可能一直Busy, 设置Time out功能, 同时程序中记录此情况, 下次执行可绕过.

赞(0)
未经允许不得转载:TI中文支持网 » 如果MSP430的某个地址上的Flash坏了,BUSY会是什么?
分享到: 更多 (0)