TI中文支持网
TI专业的中文技术问题搜集分享网站

官方LIB的FLASH擦除段的疑惑

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了,是给寄存器定位当前地址用的?

Maka Luo:

information flash 分为4个Segment,这里传输的并非地址信息,而是information flash segment 地址。

如果需要擦除code flash, 调用extern void FlashCtl_eraseBank(uint8_t *flash_ptr); flash是以bank为单位擦除。

赞(0)
未经允许不得转载:TI中文支持网 » 官方LIB的FLASH擦除段的疑惑
分享到: 更多 (0)