如何訪問MSP430F5438單片機64K外的flash
1. 在IAR 的集成開發(fā)環(huán)境中.選中你的工程,右鍵,點options,
2. 在Target 頁面中,Data Model選項,4選中Medium或Large,
3. 解釋:
- 選中SMALL只能訪問64K以內(nèi)的空間,以外的空間只能有內(nèi)部函數(shù)訪問
- 選中Medium 可以訪問1M以內(nèi)的空間
- 選中Large可以訪問全部空間
1.F5XX 430X
2.選擇Large small medium 產(chǎn)生效果是改變指針變量所占字節(jié)個數(shù).IAR中指針變量默認2個字節(jié),選擇large占用4個字節(jié),那么指針就可以訪問超過64K范圍的地址.
3.可以采用IAR內(nèi)部函數(shù), */
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有關(guān)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();
}