封装好读写函数,输入地址可写入和读出,都是long数据类型
void flash_w(int add,long value)
{
Flash_ptrD = (unsigned long *) add; // 初始化Flash pointer
FCTL3 = FWKEY; // FWKEY为写入密码
FCTL1 = FWKEY+ERASE; // FWKEY为写入密码,ERASE为段擦除
*Flash_ptrD = 0; // 擦除
FCTL1 = FWKEY+BLKWRT; // FWKEY为写入密码,BLKWRT为long word写入
*Flash_ptrD = value; // Write to Flash
FCTL1 = FWKEY; // Clear WRT bit
FCTL3 = FWKEY+LOCK; // Set LOCK bit
}
long flash_r(int add)
{
long n;
Flash_ptrD = (unsigned long *) add; // Initialize Flash pointer
FCTL3 = FWKEY; // Clear Lock bit
FCTL1 = FWKEY+ERASE; // Set Erase bit
FCTL1 = FWKEY+BLKWRT; // Enable long-word write
n = *Flash_ptrD; // Write to Flash
FCTL1 = FWKEY; // Clear WRT bit
FCTL3 = FWKEY+LOCK; // Set LOCK bit
return n;
}
int main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
long va;
while(1)
{
flash_w(0x1800,1234) //在地址0x1800写入1234
va = flash_r(0x1800); //读取地址为0x1800的数据
}
}