先给各位看帖回帖的同志们道声谢,网上查了很久没结果,故特来求问!
我有一堆比较大的数据想存在flash中,但是info flash太小了,想存在main flash中。
但是同样的程序在info flash中是可以正常写入的,在main flash中却不行了,单片机总是会reset。
求问想把数据存在main flash中要如何操作?!!
网上有说可以自己定义存的地址,还要改什么linker文件,不懂,请详解!!
这两个是我擦除和写入flash的函数,在info flash内是可以正常执行的。但是在main flash里面调用会reset掉!
void FERASE(U16 address)
{
//_DINT();
U8 *Erase_address ;
Erase_address = (U8 *)address ;
FCTL1 = FWKEY + ERASE ;
FCTL3 = FWKEY ;
*Erase_address = 0 ;
FCTL1 = FWKEY ;
FCTL3 = FWKEY + LOCK ;
//_EINT();
}
void FWRITE(U16 address, U8* data,U16 length)
{
//_DINT();
U16 i ;
U8* Wr_Addr ;
Wr_Addr =(U8*)address ;
FCTL1 = FWKEY + WRT ; // Set WRT bit for write operation
FCTL3 = FWKEY ;
//while(FCTL3 & BUSY);
for(i=0;i<length;i++)
{
*Wr_Addr= data ;
Wr_Addr++ ;
}
FCTL1 = FWKEY ;
FCTL3 = FWKEY + LOCK ;
//while(FCTL3 & BUSY);
//_EINT();
}
|