本文引用地址:
https://www.eepw.com.cn/article/201611/321075.htm//[Flash.c]Flash擦写-------------------------------------------------------*
//本文件包含: *
// (1)Flash_Erase_Sector:擦除一个指定的扇区 *
// (2)Flash_Write_Nword:向一个指定的区域写入若干个字 *
//-------------------------------------------------------------------------*
//头文件
#include "Flash.h" //Flash擦写头文件
#pragma CODE_SEG CODE_flash
#pragma CONST_SEG CONST_flash
void Erase_Write_Pretreat(INT8U page); //擦写子函数内部调用的函数声明
//页所对应的块对照表
//两个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对应的存储空间里。
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里摘出来了,它默认定义了所有代码、常量的存放区段,红色部分是我添加出来的,把我的主要文件放入了ROM_4000这个地址里,也就是对应了0x4000_0x7fff这个地址里。
于是程序顺利调通,这里小小得庆祝一下~
评论