1) FCTL1 = FWKEY + WRT; //允许写操作
2) while( FCTL3 & BUSY ); //等待Flash存储器完成操作
3) for( u8_i=0; u8_i<u8_len; u8_i++ )
4) {
5) *dptr++ = *sptr++;
6) while( !(FCTL3 & WAIT) ); //为1表示准备好写下一个字节
7) }
以上代码,连续写多个字节,可以正常完成。去掉while( !(FCTL3 & WAIT) );也可以正确写。但是,查看msp430 user guide,上面说明多字节谢需要将FCTL1的BLKWRT置位,第1)句写成FCTL1 = FWKEY + WRT +BLKWRT; 却不能正确写入数据,请问这是为何???
另外,手册中将WAIT只在BLKWRT位置位时才有需检测,我上述代码加不加都可以写成功,是什么原因呢?还有很多教材讲,WAIT是跨了block才需检测,而手册中描述是块写入时每写一个字(或字节)就需检测一次,谁对谁错呢?
实在弄不清楚,希望知道的指点下,谢谢啦!!! |