久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > msp430 FLASH 字節讀寫程序

msp430 FLASH 字節讀寫程序

作者: 時間:2016-11-11 來源:網絡 收藏
/***** 430 FLASH 字節讀寫程序 *************************/


430的數據RAM 與FLASH的讀寫

本文引用地址:http://cqxgywz.com/article/201611/316577.htm

#define FLASH_ADDRESS 0x1000 //定義FLASH信息區地址B段
void flash_erase(unsigned char*);

void read_flash(unsigned char *pc_byte, unsigned char *array,unsigned char amount);

void write_flash(unsigned char *pc_byte,unsigned char *array,unsigned char amount);

//******************************************************************************

//FLASH段擦除

void flash_erase(unsigned char *pc_word)

{

while(FCTL3 & BUSY); //如果處于忙狀態,則等待

FCTL3 = FWKEY ; //清出LOCK標志,解鎖

FCTL1 = FWKEY + ERASE ; //允許段擦除

*pc_word = 0; //擦除..擦除..

while(FCTL3 & BUSY);

FCTL3 = FWKEY + LOCK ; //加鎖

}

//******************************************************************************

//向FLASH信息區讀出指定數量的字節數據

//unsigned int*pc_word :信息區數據指針

//unsigned char *array :讀出數據存放數據數組,8位長

//unsigned char amount :讀操的數量,范圍0-127

void read_flash(unsigned char *pc_byte, unsigned char *array,unsigned char amount)

{ unsigned char i;

for(i=0;i

{

*array = *pc_byte; //讀數據,讀數據時,flash地址自動加 1

array++; //接收緩沖區地址加 1

}
}

//******************************************************************************

//向FLASH信息區寫入指定數量的字節數據

//unsigned char *pc_byte 信息區數據指針

//unsigned char *array :讀出數據存放數據數組,8位長

//unsigned char amount :讀操的數量,范圍0-127

void write_flash(unsigned char *pc_byte,unsigned char *array, unsigned char amount)

{ unsigned char i;
_DINT();

while(FCTL3 & BUSY); //如果處于忙狀態,則等待

FCTL3 = FWKEY ; //清出LOCK標志

FCTL1 = FWKEY + WRT ; //寫操作,塊編程,+ BLKWRT;


for(i=0;i

{

*pc_byte = *array;

//*pc_byte = num;

// num +=1;

array++; //發送緩沖區地址加 1

pc_byte++; //寫flash時,地址人為加 1

while(!(FCTL3 & WAIT)); //如果處于忙狀態,則等待 ,若用軟件仿真,去掉                 //這語句

}

FCTL1 = FWKEY; //寫操作完成,清除編程允許位 WRT,BLKWRT

while(FCTL3 & BUSY);

FCTL3 = FWKEY + LOCK;

}


/*

#define RAM_ADDRESS 0x300
__no_init volatile uchar XINHAO[3] @ 0x300; //型號 默認201
__no_init volatile uchar BdFlag @ 0x303; ////ff表示沒有標定,00表示已標定置零01表示已標定1點.02表示已標定2點.03表示已標定3點
__no_init volatile uchar EDZHI @ 0x304; //額定值
__no_init volatile uchar CYSJ @ 0x305; //采樣時間
__no_init volatile uchar GJSJ @ 0x306; //自動關機時間
__no_init volatile uchar YLDW @ 0x307; // 壓力單位
__no_init volatile float Pyz @ 0x30A; // 置零后的皮壓值
__no_init volatile float Bdxs[16] @ 0x310; // 標定系數
__no_init volatile float Bdzhi[16] @ 0x350; // 標定值
__no_init volatile float Bdnm[16] @ 0x390; // 標定內碼0X0D0


void main(void)
{
volatile unsigned int i; // Use volatile to prevent removal
// by compiler optimization

WDTCTL = WDTPW + WDTHOLD; // Stop WDT
FLL_CTL0 |= XCAP14PF; // Configure load caps
for (i = 0; i < 10000; i++); // Delay for 32 kHz crystal to
unsigned char *pc_flash; //定義字節指針變量 為字節讀寫
pc_flash = (unsigned char *) FLASH_ADDRESS; //為指針初始化 // stabilize
unsigned char *pc_ram; //定義字節指針變量 為字節讀寫
pc_ram = (unsigned char *) RAM_ADDRESS; //為指針初始化

while(1)

{
BdFlag = 1;
Bdxs[0]=3.14;
flash_erase(pc_flash); //段擦除
write_flash(pc_flash,pc_ram ,208); //寫入指定字節數量
read_flash(pc_flash,pc_ram,208); //再讀出剛才寫的字節
LPM3; // Enter low power mode 3
} */



關鍵詞: 430FLASH字節讀

評論


技術專區

關閉