msp430_flash.c

来自「MSP430F149读写自身Flash操作」· C语言 代码 · 共 72 行

C
72
字号
#include <msp430x14x.h>
#include "Msp430_Flash.h"
#include "General.h"

/********************************************************\
*	函数名:Init_OperFlash()
	作用域:外部文件调用
\********************************************************/
void Init_OperFlash(void)
{
	WDTCTL=WDTPW+WDTHOLD;   //关闭看门狗WDT  ,WDTPW看门狗的口令
	FCTL2 =	FWKEY + FSSEL1 + FN0;
}
/********************************************************\
*	函数名:Write_SegAB()
	作用域:外部文件调用
\********************************************************/
void Write_SegAB(unsigned char Address_Flag)
{
	char *Flash_ptr;
	unsigned int i;
	if(Address_Flag==0)
	{
		Flash_ptr = (char *)0x1080;	//初始化指针
	}
	else if(Address_Flag==1)
	{
		Flash_ptr = (char *)0x1000;	//初始化指针
	}
	else
	{
		return;
	}
	_DINT();							//关闭其他所有中断
	FCTL1 = FWKEY + ERASE;				//使能擦除操作
	FCTL3 = FWKEY;						//FLASH解锁
	*Flash_ptr = 0;						//空写,启动擦除
	FCTL1 = FWKEY + WRT;				//允许写操作
	for(i=0;i<128;i++)
	{
		*Flash_ptr++=gGeneral_Buffer[i];
	}
	FCTL1 = FWKEY;
	FCTL3 = FWKEY+LOCK;					//写完了,锁定
	_EINT();							//开启其他所有中断
}

/********************************************************\
*	函数名:Erase_SegAB()
	作用域:外部文件调用
\********************************************************/
void Read_SegAB(unsigned char Address_Flag)
{
	unsigned char *Flash_ptr;
	unsigned int i;
	if(Address_Flag==0)
	{
		Flash_ptr = (unsigned char *)0x1080;	//初始化指针
	}
	else if(Address_Flag==1)
	{
		Flash_ptr = (unsigned char *)0x1000;	//初始化指针
	}
	else
	{
		return;
	}
	for(i=0;i<128;i++)
	{
		gGeneral_Buffer[i]=*Flash_ptr++;
	}
}

⌨️ 快捷键说明

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