首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

读写FALSH,我郁闷了..

读写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都正常,但进入主程序循环后,我里面有一个时间中断,好象是在这个中断起作用后,就读写不了了,而且一擦除就卡死.老大帮忙看看..
没人知道吗.顶一下..
你这个时间中断与FLASH读写有什么关系?
海纳百川  有容乃大
没什么关系啊.时间中断只是做简单的定时用..用的是T2CHO中断.
再说我也用 asm sei 屏蔽中断了..
那你把这个中断程序去掉,再进入主程序循环后试试。
海纳百川  有容乃大
问题解决了...这几天可把我累坏了..以后要慎用FREESCALE的芯片才行.
是什么问题呢?
海纳百川  有容乃大
很简单的问题..就下面这句没给他定义一个地址..unsigned int *FILE_PTR = (unsigned int *)(&BUS_SPD);

被官方的技术文档给骗了..
不明白,什么没有定义地址?你在前面不是定义了BUS_SPD的地址为0x0060吗?
海纳百川  有容乃大
返回列表