微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > MSP430 Flash编程程序

MSP430 Flash编程程序

时间:11-13 来源:互联网 点击:
d add scratch pad offset
pointer = (BYTE*)(((WORD)(pointer) & 0x7F) + (WORD)(containerBase));
*pointer = value;
}

/*************************************************************************************************
Function : flash_update
Parameter : *container : pointer to updated copy of data in RAM
*flashPageBase : pointer to start of destination flash segment
Date : 11.09.2002 / 26.11.2002
Description : erases the flash page and writes the values from the RAM save area to flash
(!!! works only in INFO flash !!!)
*************************************************************************************************/
void flash_updateInfo(BYTE *container, BYTE *flashPageBase)
{
// assumes prior saving and changing of flash data
BYTE i;

flashPageBase = (BYTE*)((WORD)(flashPageBase) & 0xFF80); // wrap around for flash page base address

_DINT();
flash_eraseFLASH(flashPageBase);

for(i=0;i<128;i++)
{
flash_writeByte(flashPageBase++,*(container++));
}
_EINT();
}

/*flash.h文件
+-------------------------------------------------------------------------------+
: copyright (c) Jean Randhahn :
+-------------------------------------------------------------------------------+
: Project : CANeye - Uni Rostock :
: Compiler : IAR workbench GUI 2.31E / target descriptor v1.26A/WIN :
+-------------------------------------------------------------------------------+
: :
: class : flash :
: File name : flash.h :
: Target hardware : MSP430F148/9 :
: :
: File Editor : J. Randhahn :
: Created : 06.08.2002 :
: :
: Description : :
: :
: :
: :
: :
+-------------------------------------------------------------------------------+
: :
: Modification history: :
: :
: :
+-------------------------------------------------------------------------------+
*/
#ifndef __FLASH_H__
#define __FLASH_H__

#ifdef __FLASH__
/*::::::::::::::::::::::::: START OF LOCAL PART ::::::::::::::::::::::::::::::::*/
/*----------------------- LOCAL INCLUDES ---------------------------------------*/
#include msp430x14x.h>
#include "type.h"

/*----------------------- LOCAL DEFINITIONS ------------------------------------*/

/*----------------------- LOCAL FUNCTION DECLARATIONS --------------------------*/
void flash_eraseFLASH(BYTE *seg);
void flash_writeWord(WORD *dst, WORD value);
void flash_writeByte(BYTE *dst, BYTE value);
void flash_saveInfoFlash(BYTE *container, BYTE *flashPage);
void flash_changeInfo(BYTE* containerBase, BYTE *pointer, BYTE value);
void flash_updateInfo(BYTE *container, BYTE *flashPageBase);

/*----------------------- LOCAL CONSTANTS AND VARIABLES ------------------------*/

/*----------------------- PUBLIC VARIABLES WITH INITIALISATION -----------------*/

/*::::::::::::::::::::::::: END OF LOCAL PART ::::::::::::::::::::::::::::::::::*/

#else
/*----------------------- PUBLIC VARIBALES INITIALIZED LOCALLY -----------------*/
#endif

/*-------------------- PUBLIC DEFINITIONS --------------------------------------*/

/*-------------------- PUBLIC CONSTANTS AND VARIABLES --------------------------*/

/*-------------------- PUBLIC FUNCTION DECLARATIONS ----------------------------*/
extern void flash_eraseFLASH(BYTE *seg);
extern void flash_writeWord(WORD *dst, WORD value);
extern void flash_writeByte(BYTE *dst, BYTE value);
extern void flash_saveInfoFlash(BYTE *container, BYTE *flashPage);
extern void flash_changeInfo(BYTE* containerBase, BYTE *pointer, BYTE value);
extern void flash_updateInfo(BYTE *container, BYTE *flashPageBase);
#endif

//type.h文件
/* START type definitions for convinience with microcontrollers ****************************/
typedef unsigned char BYTE; /* 8 bits */
typedef unsigned short WORD; /* 16 bits */
typedef unsigned long LONGWORD; /* 32 bits */

/* for dividing a WORD into two BYTEs */
typedef union _WORD_BYTE
{ WORD w;
BYTE b[2];
} WORD_BYTE;

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top