?? flash操作,讀取與回寫.c
字號:
/**********************************************************/
//MSP430 Advanced Developping Components - [BaseComponents_44.C]
////Flash In-System Programming, Copy SegA to SegB
////->>> http://www.dutzm.cn
////->>> tel :(0)13130044096
/**********************************************************/
//MSP430高級實驗開發組件 - Flash操作,讀取與回寫
//時鐘設置:
////MCLK 550kHz - 900kHz.
//當前演示程序功能描述:
////MSP430片內的Flash操作,將SEGA中內容復制到SEGB中
/*********************************************************/
#include <msp430x14x.h>
unsigned char value;
void write_SegA (unsigned char value);
void copy_A2B (void);
void main(void) {
WDTCTL = WDTPW + WDTHOLD; //關閉看門狗
FCTL2 = FWKEY + FSSEL0 + FN0; //MCLK/2作為Flash操作時鐘
value = 0;
while(1) {
write_SegA(value++); //向Flash的A段寫入數據
copy_A2B(); //將A段數據寫入B段
_NOP(); //加入斷點觀察數據
}
}
void write_SegA (unsigned char value) {
unsigned char *Flash_ptr; //Flash操作用指針
unsigned int i;
Flash_ptr = (unsigned char *) 0x1080; //初始化指針
FCTL1 = FWKEY + ERASE; //允許擦除數據
FCTL3 = FWKEY; //清除鎖定
*Flash_ptr = 0; //寫入數據
FCTL1 = FWKEY + WRT; //設置WRT,向Flash中寫入
for (i=0;i<128;i++) {
*Flash_ptr++ = value; //向Flash中寫入
}
FCTL1 = FWKEY; //清除WRT寫入標志位
FCTL3 = FWKEY + LOCK; //鎖定Flash寫入
}
void copy_A2B (void) {
unsigned char *Flash_ptrA; //段A指針
unsigned char *Flash_ptrB; //段B指針
unsigned int i;
Flash_ptrA = (unsigned char *) 0x1080; //初始化段A指針
Flash_ptrB = (unsigned char *) 0x1000; //初始化段A指針
FCTL1 = FWKEY + ERASE; //允許擦除數據
FCTL3 = FWKEY; //清除鎖定
*Flash_ptrB = 0; //寫入數據
FCTL1 = FWKEY + WRT; //設置WRT,向Flash中寫入
for (i=0;i<128;i++) {
*Flash_ptrB++ = *Flash_ptrA++; //復制數據
}
FCTL1 = FWKEY; //清除WRT寫入標志位
FCTL3 = FWKEY + LOCK; //鎖定Flash寫入
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -