?? flash.c
字號(hào):
#include "ss.h"
//寫入int型的數(shù)字,發(fā)現(xiàn)flash每次一存儲(chǔ)就是兩個(gè)字節(jié)
//輸入要寫入的數(shù)值和地址.地址格式是0x4000....
//對flash存儲(chǔ)器的擦除必須是一段一段的進(jìn)行.
//不可能一個(gè)字節(jié)一個(gè)字節(jié)的擦除
//主存儲(chǔ)器第n(0-119)段的地址(FE00H-n x 512)----(FFFFH-n x 512)
//取擦除地址從0x4400開始,即n=5D,到44FF.取寫數(shù)據(jù)的地址從0x4410開始,然后向下寫數(shù)據(jù)。
void write_para(void)
{
unsigned int *Flash_ptr; // Flash pointer
Flash_ptr = (unsigned int *)0x4400; // Initialize Flash pointer
FCTL1 = FWKEY + ERASE; // Set Erase bit,FWKEY=A5,寫操作
FCTL3 = FWKEY; // Clear Lock bit
*Flash_ptr = 0;
//while(FCTL3&BUSY); // Dummy write to erase Flash segment
FCTL1 = FWKEY + WRT; // Set WRT bit for write operation
Flash_ptr = (unsigned int *)0x4410;
*Flash_ptr =PV_bCyclesNum;
Flash_ptr = (unsigned int *)0x4412;
*Flash_ptr =Main_bStatusFlag;
Flash_ptr = (unsigned int *)0x4414;
*Flash_ptr =w_PAGEADDR;
Flash_ptr = (unsigned int *)0x4416;
*Flash_ptr =w_BYTEADDR;
//while(FCTL3&BUSY); // Write value to flash
FCTL1 = FWKEY; // Clear WRT bit
FCTL3 = FWKEY + LOCK; // Reset LOCK bit
}
//從某個(gè)地址addr取出取出一個(gè)char型的數(shù)字
unsigned int read_Segment(int addr)
{
unsigned int value;
unsigned int *Flash_ptr;
Flash_ptr = (unsigned int *)addr;
value=*Flash_ptr;
return value;
}
void read_para(void)
{
PV_bCyclesNum=(read_Segment(0x4410)&0xFF);
Main_bStatusFlag=(read_Segment(0x4412)&0xFF);
w_PAGEADDR=read_Segment(0x4414);
w_BYTEADDR=read_Segment(0x4416);
}
//*******************************************
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -