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

📄 flash.c

📁 MSP430系列单片机资料-7册-46.3M-pdf.zip
💻 C
字号:
/****************************************************************************\
文件名:flash.c
编写者:czhang
描述:用于MSP430F149。
      FLASH存储器读写、擦除。时钟源:MCLK 8MHz
版本:1.0	2005-2-19
\****************************************************************************/
#include  <msp430x14x.h>
#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存储器完成操作
	;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -