当前位置:首页 > 单片机 > 单片机
[导读]1. 在IAR 的集成开发环境中.选中你的工程,右键,点options,2. 在Target 页面中,Data Model选项,4选中Medium或Large, 3. 解释: - 选中SMALL只能访问64K以内的空间,以外的空间只能有内部函数访问 - 选中Medium

1. 在IAR 的集成开发环境中.选中你的工程,右键,点options,

2. 在Target 页面中,Data Model选项,4选中Medium或Large,
3. 解释:
- 选中SMALL只能访问64K以内的空间,以外的空间只能有内部函数访问
- 选中Medium 可以访问1M以内的空间
- 选中Large可以访问全部空间


1.F5XX 430X
2.选择Large small medium 产生效果是改变指针变量所占字节个数.IAR中指针变量默认2个字节,选择large占用4个字节,那么指针就可以访问超过64K范围的地址.
3.可以采用IAR内部函数, */

void __data20_write_char (unsigned long __addr,
unsigned char __value);

void __data20_write_short(unsigned long __addr,
unsigned short __value);

void __data20_write_long (unsigned long __addr,
unsigned long __value);

unsigned char __data20_read_char (unsigned long __addr);
unsigned long __data20_read_long (unsigned long __addr);

5438的flash操作方法
请教MSP430F5438有关flash操作的问题,代码见下,为什么固定地址的flash没有改变?

代码:
void main(void)
{

unsigned long SEGMENT = 0x20000ul;

WriteFlash(SEGMENT);
FlashErase(SEGMENT);

while(1);


}代码:
//擦除Flash指定地址:adr指定地址Y
void FlashErase(unsigned long pAddr)
{

uchar * Flash_ptr = (uchar *)pAddr;

_DINT();

while(BUSY & FCTL3);
FCTL3 = FWKEY;
FCTL1 = FWKEY+ERASE;
*Flash_ptr = 0;
while(BUSY & FCTL3);
FCTL3 = FWKEY+LOCK;
_EINT();
}代码:
//写入Flash指定地址:adr指定地址,
void WriteFlash(unsigned long pAddr)
{
_DINT();
unsigned int i;
uchar * Flash_ptr = (uchar *)pAddr;
while (FCTL3&BUSY);
FCTL3 = FWKEY;
FCTL1 = FWKEY+WRT;
for(i = 0; i < 128; i++)
{
*(Flash_ptr++) = record1[i];
while(!(WAIT & FCTL3));
}
while (FCTL3&BUSY);
FCTL1 = FWKEY;
FCTL3 = FWKEY+LOCK;
_EINT();
}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭