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;
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;
MSP430Flash编程程 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)