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> |
|