MSP430系列单片机资料-7册-46.3M-pdf.zip

源代码在线查看: flash.c

软件大小: 42600 K
上传用户: ssj
关键词: M-pdf 46.3 MSP 430
下载地址: 免注册下载 普通下载 VIP

相关代码

				/****************************************************************************\
				文件名:flash.c
				编写者:czhang
				描述:用于MSP430F149。
				      FLASH存储器读写、擦除。时钟源:MCLK 8MHz
				版本:1.0	2005-2-19
				\****************************************************************************/
				#include  
				#include "flash.h"
				
				/***************************************************************************
				段擦除
				adr:要擦除的段内的任一地址
				***************************************************************************/
				void FlashErase(unsigned int adr) @ "MYSET"
				{
					unsigned char *p0;
				
					FCTL2=FWKEY+FSSEL_1+FN3+FN4;
					FCTL3=FWKEY;
					while(FlashBusy()==1)	//等待FLASH存储器完成操作
					;
					FCTL1=FWKEY+ERASE;
					p0=(unsigned char *)adr;
					*p0=0;			//向段内地址任意写,启动擦除操作
					FCTL1=FWKEY;
					FCTL3=FWKEY+LOCK;
					while(FlashBusy()==1)	//等待FLASH存储器完成操作
					;
				}
				
				/**************************************************************************
				测试FLASH是否忙
				返回值:1:忙   0:不忙
				**************************************************************************/
				unsigned char FlashBusy() @ "MYSET"
				{
				if((FCTL3&BUSY)==BUSY)
						return 1;
					else
						return 0;
				}
				
				/**************************************************************************
				字编程
				Adr:要编程的地址,注意:不是指针类型,应当是偶地址
				DataW:要编程的字
				**************************************************************************/
				void FlashWW(unsigned int Adr,unsigned int DataW) @ "MYSET"
				{
					FCTL1=FWKEY+WRT;
					FCTL2=FWKEY+FSSEL_1+FN3+FN4;
					FCTL3=FWKEY;
					while(FlashBusy()==1)	//等待FLASH存储器完成操作
					;
				   *((unsigned int *)Adr)=DataW;
					FCTL1=FWKEY;
					FCTL3=FWKEY+LOCK;
					while(FlashBusy()==1)	//等待FLASH存储器完成操作
					;
				}
				
				/**************************************************************************
				字节编程
				Adr:指向要编程的地址,注意:不是指针类型
				DataB:要编程的字节
				**************************************************************************/
				void FlashWB(unsigned int Adr,unsigned char DataB) @ "MYSET"
				{
					FCTL1=FWKEY+WRT;
					FCTL2=FWKEY+FSSEL_1+FN3+FN4;
					FCTL3=FWKEY;
					while(FlashBusy()==1)	//等待FLASH存储器完成操作
					;
					*((unsigned char *)Adr)=DataB;
					FCTL1=FWKEY;
					FCTL3=FWKEY+LOCK;
					while(FlashBusy()==1)	//等待FLASH存储器完成操作
					;
				}
							

相关资源