📄 main.c
字号:
/****************************************************************************\
文件名:main.c
编写者:czhang
描述:用于MSP430F149。
FLASH存储器读、写、段擦除
从程序存储器的两个数组内分别读出N_DATA个字节和字,写入信息存储器和FLASH中某
一段内,然后再将写入的内容读出到RAM中的数组中进行验证。
版本:1.0 2005-2-19
\****************************************************************************/
#include <MSP430x14x.h>
#include "flash.h"
void InitSys();
#define FLASHA_ADR 0x1080 //FLASH的A段起始地址
#define FLASHD_ADR 0x2500 //FLASH中某一段中的地址
//程序存储器中的源数组
#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; //关闭看门狗
InitSys(); //初始化
FlashErase(FLASHD_ADR); //段擦除
FlashErase(FLASHA_ADR); //段擦除
_NOP();
piq0=(unsigned int *)FLASHD_ADR; //数值强制转换为指针
pq0=(unsigned char *)FLASHA_ADR;
for(q0=0;q0<N_DATA;q0++)
{
RDataW[q0]=*piq0;
RDataB[q0]=*pq0;
piq0++;
pq0++;
}
_NOP();
LPM3; //进入低功耗模式3
}
/*****************************************************************************
系统初始化
******************************************************************************/
void InitSys()
{
unsigned int iq0;
//使用XT2振荡器
BCSCTL1&=~XT2OFF; //打开XT2振荡器
do
{
IFG1 &= ~OFIFG; //清除振荡器失效标志
for (iq0 = 0xFF; iq0 > 0; iq0--); //延时,等待XT2起振
}
while ((IFG1 & OFIFG) != 0); //判断XT2是否起振
BCSCTL2 =SELM_2+SELS; //选择MCLK、SMCLK为XT2
_EINT(); //打开全局中断控制,若不需要打开,可以屏蔽本句
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -