⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 实用c语言程序设计附带程序
💻 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 + -