Quantcast
Channel: MSP 低功耗微控制器论坛 - 最近的话题
Viewing all articles
Browse latest Browse all 3634

官方LIB的FLASH擦除段的疑惑

$
0
0

void FlashCtl_eraseSegment(uint8_t *flash_ptr){
//Clear Lock bit
HWREG16(FLASH_BASE + OFS_FCTL3) = FWKEY;

//Set Erase bit
HWREG16(FLASH_BASE + OFS_FCTL1) = FWKEY + ERASE;

//Dummy write to erase Flash seg
*flash_ptr = 0;

//test busy
while(HWREG8(FLASH_BASE + OFS_FCTL3) & BUSY)
{
;
}

//Clear ERASE bit
HWREG16(FLASH_BASE + OFS_FCTL1) = FWKEY;

//Set LOCK bit
HWREG16(FLASH_BASE + OFS_FCTL3) = FWKEY + LOCK;
}

上述程序复制与官方LIB中的flashctl.c

现在有些许疑问:为什么输入的地址是8位,main memory不都是16位和20位的吗。

                                其次,为什么直接地址的值赋0,后面就可以擦除FLASH了,是给寄存器定位当前地址用的?


Viewing all articles
Browse latest Browse all 3634

Trending Articles