Board logo

标题: 读写FALSH,我郁闷了.. [打印本页]

作者: 紫龙高飞    时间: 2008-3-20 19:47     标题: 读写FALSH,我郁闷了..

型号:HC908JL16.晶振20M
主要程序程序如下:
#define ERARNGE 0xFCBE
#define PRGRNGE 0xFC06
#define LDRNGE 0xFF30
const byte FLBPR_INIT @0x0000FFCF = 0xFE;
unsigned char BUS_SPD @0x0060; /* Value should equal 4x Bus speed */
unsigned char DATASIZE @0x0061; /* Number of bytes in data array (max 255) */
unsigned int ADDR @0x0062; /* Start address of FLASH to manipulate */
unsigned char DATA[4] @0x0064; /* Data to program into FLASH */
unsigned int *FILE_PTR = (unsigned int *)(&BUS_SPD);
uchar shezhi[4] @0x6c; //FLASH保存变量

CONFIG1=0X19; //COP=DISABLE stop=disable

void write_flash(uint adr,uchar dates){
uchar i; //写数据到FLASH
asm sei;
BUS_SPD =20;
DATASIZE =dates;
ADDR = adr;
for(i=0;i DATA=shezhi;
asm(LDHX FILE_PTR);
asm(JSR PRGRNGE);
asm cli;
}

void FLASHErase(uint adr){
unsigned char i;
asm sei;
BUS_SPD = 20;
DATASIZE = 4;
ADDR = adr;
for(i=0;i<4;i++)
DATA=0xaa;
asm(LDHX FILE_PTR);
asm(JSR ERARNGE);
asm cli;
}

现在的问题是,程序刚开始运行时,读写FLASH都正常,但进入主程序循环后,我里面有一个时间中断,好象是在这个中断起作用后,就读写不了了,而且一擦除就卡死.老大帮忙看看..

作者: 紫龙高飞    时间: 2008-3-24 21:58

没人知道吗.顶一下..
作者: strongchen    时间: 2008-3-25 10:23

你这个时间中断与FLASH读写有什么关系?
作者: 紫龙高飞    时间: 2008-3-25 11:51

没什么关系啊.时间中断只是做简单的定时用..用的是T2CHO中断.
再说我也用 asm sei 屏蔽中断了..
作者: strongchen    时间: 2008-3-25 14:27

那你把这个中断程序去掉,再进入主程序循环后试试。
作者: 紫龙高飞    时间: 2008-3-27 20:22

问题解决了...这几天可把我累坏了..以后要慎用FREESCALE的芯片才行.
作者: strongchen    时间: 2008-3-28 09:59

是什么问题呢?
作者: 紫龙高飞    时间: 2008-3-31 16:33

很简单的问题..就下面这句没给他定义一个地址..unsigned int *FILE_PTR = (unsigned int *)(&BUS_SPD);

被官方的技术文档给骗了..

作者: strongchen    时间: 2008-4-1 10:27

不明白,什么没有定义地址?你在前面不是定义了BUS_SPD的地址为0x0060吗?




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0