| 
 
| void FlashObj::ChipErase(void)<br />{<br />  Busy = true;<br />  FLASH[0x5555] = 0xaa;  <br />  FLASH[0x2AAA] = 0x55;  <br />  FLASH[0x5555] = 0x80;<br />  FLASH[0x5555] = 0xaa;  <br />  FLASH[0x2AAA] = 0x55;  <br />  FLASH[0x5555] = 0x10;<br />  Wait(FLASH[0x5555]);<br />  Busy = false;<br />}<br /><br />在函数ChipErase中,Flash变量地址0x85555是用FLASH[0x5555]表达的.<br />这样用数组寻址比较直观~~~<br /><br />实现方法如下:<br /><br />1.在CMD文件中<br /><br />MEMORY<br />{<br />PAGE 0:    /* Program Memory */<br /><br />PAGE 1:    /* Data Memory */<br />   ERAM        : origin = 0x100000, length = 0x04000<br />   EFLASH      : origin = 0x080000, length = 0x10000<br />}<br /><br />SECTIONS<br />{<br />   ERamRegsFile          : > ERAM,        PAGE = 1<br />   EFlashRegsFile        : > EFLASH,      PAGE = 1<br />}<br /><br />2.在C/C++文件中<br />#pragma DATA_SECTION("ERamRegsFile") <br />volatile unsigned int RAM[0x4000];<br /><br />#pragma DATA_SECTION("EFlashRegsFile") <br />volatile unsigned int FLASH[0x10000];<br /><br />3.在应用程序中<br />extern unsigned int RAM[];<br />extern unsigned int FLASH[];<br /><br />  <br /> 相关链接:<a href='https://bbs.21ic.com/club/bbs/list.asp?boardid=10&t=2928989'>https://bbs.21ic.com/club/bbs/list.asp?boardid=10&t=2928989</a> | 
 |