本文引用地址:
http://m.butianyuan.cn/article/201611/321075.htm//[Flash.c]Flash擦寫-------------------------------------------------------*
//本文件包含: *
// (1)Flash_Erase_Sector:擦除一個(gè)指定的扇區(qū) *
// (2)Flash_Write_Nword:向一個(gè)指定的區(qū)域?qū)懭肴舾蓚€(gè)字 *
//-------------------------------------------------------------------------*
//頭文件
#include "Flash.h" //Flash擦寫頭文件
#pragma CODE_SEG CODE_flash
#pragma CONST_SEG CONST_flash
void Erase_Write_Pretreat(INT8U page); //擦寫子函數(shù)內(nèi)部調(diào)用的函數(shù)聲明
//頁所對(duì)應(yīng)的塊對(duì)照表
//兩個(gè)flash塊,每塊4頁 flash0 flash1
const INT8U pagetable[4][4] = {{0x3C,0x3D,0x3E,0x3F},{0x38,0x39,0x3A,0x3B},{0x34,0x35,0x36,0x37},{0x30,0x31,0x32,0x33}};
上面紅色的代碼是我添加出來的,功能是將本段代碼放在CODE_flash對(duì)應(yīng)的存儲(chǔ)空間里。
PLACEMENT
_PRESTART,
STARTUP,
ROM_VAR,
STRINGS,
VIRTUAL_TABLE_SEGMENT,
//.ostext,
NON_BANKED,
COPY
INTO ROM_C000;
DEFAULT_ROM INTO PAGE_38, PAGE_39;
CODE_main,
CODE_flash,
CODE_MCUInit,
CODE_SCI
INTO ROM_4000;
//.stackstart,
SSTACK,
//.stackend,
DEFAULT_RAM INTO RAM;
這一段是P&E_Multilink_CyclonePro_linker.prm里摘出來了,它默認(rèn)定義了所有代碼、常量的存放區(qū)段,紅色部分是我添加出來的,把我的主要文件放入了ROM_4000這個(gè)地址里,也就是對(duì)應(yīng)了0x4000_0x7fff這個(gè)地址里。
于是程序順利調(diào)通,這里小小得慶祝一下~
評(píng)論