?? main.c.bak
字號:
/****************************************************************************\
文件名:main.c
編寫者:czhang
描述:用于MSP430F149。
FLASH存儲器讀、寫、段擦除
從程序存儲器的兩個(gè)數(shù)組內(nèi)分別讀出N_DATA個(gè)字節(jié)和字,寫入信息存儲器和FLASH中某
一段內(nèi),然后再將寫入的內(nèi)容讀出到RAM中的數(shù)組中進(jìn)行驗(yàn)證。
版本:1.0 2005-2-19
\****************************************************************************/
#include <MSP430x14x.h>
#include "flash.h"
void InitSys();
#define FLASHA_ADR 0x1080 //FLASH的A段起始地址
#define FLASHD_ADR 0x2500 //FLASH中某一段中的地址
//程序存儲器中的源數(shù)組
#define N_DATA 10
const unsigned char DataB[N_DATA]={0,1,2,3,4,5,6,7,8,9};
const unsigned int DataW[N_DATA]={0,100,200,300,400,500,600,700,800,900};
int main( void )
{
unsigned char q0;
unsigned int iq1,iq2;
const unsigned int *piq0=DataW;
const unsigned char *pq0=DataB;
unsigned char RDataB[N_DATA]={0,0,0,0,0,0,0,0,0,0};
unsigned int RDataW[N_DATA]={0,0,0,0,0,0,0,0,0,0};
WDTCTL = WDTPW + WDTHOLD; //關(guān)閉看門狗
InitSys(); //初始化
FlashErase(FLASHD_ADR); //段擦除
FlashErase(FLASHA_ADR); //段擦除
_NOP();
piq0=(unsigned int *)FLASHD_ADR; //數(shù)值強(qiáng)制轉(zhuǎn)換為指針
pq0=(unsigned char *)FLASHA_ADR;
for(q0=0;q0<N_DATA;q0++)
{
RDataW[q0]=*piq0;
RDataB[q0]=*pq0;
piq0++;
pq0++;
}
_NOP();
LPM3; //進(jìn)入低功耗模式3
}
/*****************************************************************************
系統(tǒng)初始化
******************************************************************************/
void InitSys()
{
unsigned int iq0;
//使用XT2振蕩器
BCSCTL1&=~XT2OFF; //打開XT2振蕩器
do
{
IFG1 &= ~OFIFG; //清除振蕩器失效標(biāo)志
for (iq0 = 0xFF; iq0 > 0; iq0--); //延時(shí),等待XT2起振
}
while ((IFG1 & OFIFG) != 0); //判斷XT2是否起振
BCSCTL2 =SELM_2+SELS; //選擇MCLK、SMCLK為XT2
_EINT(); //打開全局中斷控制,若不需要打開,可以屏蔽本句
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -