使用Flash模拟EEPROM,安装NXP官方的例子,NXP是Keil的,我需要移植到IAR,
这2句出错:
static UNSIGNED8 mSectorMemory1[SECTOR_SIZE]__attribute__(at(SECTOR1_STARTADDR));
static UNSIGNED8 mSectorMemory2[SECTOR_SIZE]__attribute__(at(SECTOR2_STARTADDR));
IAR如何说明变量所在的Flash区域??
此帖出自
小平头技术问答
定义一个段,需要修改工程的icf文件,在工程指定的icf文件末尾加入如下内容:
define region MyOwnRegion = mem:[from 0x0800FC00 size 0x400]; //定义一个区域
place in MyOwnRegion {section LastPage}; //把段LastPage 放入区域MyOwnRegion
然后在工程的C文件中:
#pragma location="LastPage"
const uint32_t vSetRate_pre = VOLT_SET_REF;
#pragma location="LastPage"
const uint32_t vRdRate_pre = VOLT_RD_REF;
就可以了。
__no_init static UNSIGNED8 mSectorMemory1[SECTOR_SIZE] @ SECTOR1_STARTADDR;
__no_init static UNSIGNED8 mSectorMemory2[SECTOR_SIZE] @ SECTOR2_STARTADDR;
没有出现错误。
使用官方的例子,移植了过来。
在运行中保存数据,异常,好像没有成功保存数据,
if (!NVOL_SetVariable(EEPROM_ID, (UNSIGNED8 *)&E_data, 16))
{
while(1);
}
#define DISABLEIRQ __disable_irq();
#define ENABLEIRQ __enable_irq();
__disable_irq(); __enable_irq() 是开启与关闭中断,;这些函数在标准库里面,看不到具体的操作。不知道是不是需要自己添加函数,关闭中断??
一周热门 更多>