flash.h

来自「支持ti的dsp 5402的基本运行的c程序,简洁好用」· C头文件 代码 · 共 73 行

H
73
字号
#include "main.h"

#ifndef __DSPBIOS54_FLASH_H
#define __DSPBIOS54_FLASH_H

#ifdef __cplusplus
extern "C"
{
#endif

#define FLASH(x)  (*((volatile unsigned char *) 0x8000 + x))
/*----------------------------------------------------------
另类的"数组"访问,外扩的SST39VF800A从0x8000开始
void FlashObj::ChipErase(void)
{
  FLASH(0x5555) = 0xaa;  
  FLASH(0x2AAA) = 0x55;  
  FLASH(0x5555) = 0x80;
  FLASH(0x5555) = 0xaa;  
  FLASH(0x2AAA) = 0x55;  
  FLASH(0x5555) = 0x10;
  Wait(0x5555);
}
void FlashObj::Wait(unsigned int address)
{
unsigned int temp, val;
  do {
    val = FLASH(address);
    __nop();
    temp = FLASH(address);
    __nop();
  }
  while(((val ^ temp) & (1 << BIT6)) != 0);
}
----------------------------------------------------------*/

#define FlashMaker  0x0000
#define FlashDevice 0x0001


#define	SectorSize	0x800
#define	BlockSize	0x8000


class FlashObj {
public:
  FlashObj(void);
  void Init(void);
  void FlashReset(void);
  void FlashId(void);
  bool ChipErase(void);
  bool SectorErase(unsigned int);
  bool BlockErase(unsigned int);
  void Wait(unsigned int);
  bool Write(unsigned int , unsigned char);
  bool Program(unsigned int, unsigned int, unsigned short *);
public:
  bool Active;
  bool Succeed;
private:
  unsigned int MakerId;
  unsigned int DeviceId;
};

extern class FlashObj Flash;

#ifdef __cplusplus
}
#endif

#endif//__DSPBIOS54_FLASH_H

⌨️ 快捷键说明

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