本帖最后由 qqfishboy 于 2012-4-15 21:47 编辑
Q1:下面这段程序 是擦除输入的addr所在的那个整页吗?这个addr是每个页的起始地址吗?
void FLASH_PageErase (FLADDR addr)
{
bit EA_SAVE = EA; // preserve EA
char xdata * data pwrite; // FLASH write pointer
EA = 0; // disable interrupts
// change clock speed to slow, then restore later
VDM0CN = 0x80; // enable VDD monitor
RSTSRC = 0x02; // enable VDD monitor as a reset source
pwrite = (char xdata *) addr;
FLKEY = 0xA5; // Key Sequence 1
FLKEY = 0xF1; // Key Sequence 2
PSCTL |= 0x03; // PSWE = 1; PSEE = 1
VDM0CN = 0x80; // enable VDD monitor
RSTSRC = 0x02; // enable VDD monitor as a reset source
*pwrite = 0; // initiate page erase
PSCTL &= ~0x03; // PSWE = 0; PSEE = 0
EA = EA_SAVE; // restore interrupts
}
在0x1c00 放了一个字符4,第一次读出来了,后面不能读 不能写 都是0;
在0x1c01放了一个字符7,能读,但是不能写。
Q2:这两个地址有区别吗 ?为什么有的能读 有的不能读?
Q3:写进去的字符 怎么更改?要先擦除再写?被保护了也能擦除吗?
FLASH_ByteWrite(0x1c01,valc);
Uart0_SendChar(valc);
valb=FLASH_ByteRead(0x1c01);
Q4:每个页的起始地址 是不是已经固定好了? :)
请耐心解答。
Q5:为什么有时候能发帖 有时候不能 提示请求来路不正确? |