如何访问MSP430F5438单片机64K外的flash
扫描二维码
随时随地手机看文章
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();
}