我现在读写msp430G2553的内部Flash ,开始用内部DCO生成时钟16M,再SMSCK分频为2MHz,读写内部Flash用SMCLK,再6分频,写flash的时候容易重启; 而后来我把主时钟变为8M,SMSCK依然是2M,其他不变,在这种情况下,基本没有发现重启,请问这种现象是因为时钟设置太大引起的吗? 还是其他什么问题? 这种情况该怎么解决? 谢谢解答
灰小子:
msp430G2553运行在16MHz是没问题的。
楼主能否提供下更详细的信息,比如代码什么的?
user4498892:
回复 灰小子:
void FlashWB(unsigned int Adr,unsigned char DataB) //@ "MYSET" { _DINT(); FCTL1=FWKEY+WRT; FCTL2=FWKEY+FSSEL_2+FN3+FN2; FCTL3=FWKEY; while(FlashBusy()==1) //等待FLASH存储器完成操作 ; *((unsigned char *)Adr)=DataB; while(FlashBusy()==1) //等待FLASH存储器完成操作 ; FCTL1=FWKEY; FCTL3=FWKEY+LOCK; _EINT(); } 很常规的写操作;也不是每次都会引起重启,当重启的时候,发现那部分Flash全部变为0XFF,所以断定是flash擦除了,但是没有写成功。引起重启!
灰小子:
回复 user4498892:
擦写flash时会造成重启的可能原因大约包括如下三个:
1、flash操作频率不在允许范围
2、擦写flash时有中断或者其他影响擦写flash的操作
2、电压不足2.7V
你的代码不像是原因1.