在线时间0 小时
UID267601
注册时间2009-5-11
NXP金币0
该用户从未签到
新手上路

- 积分
- 30
- 最后登录
- 1970-1-1
|
以下是我大概程序:
//突发模式连续写
void flash_burst(uchar data[],uint des_addr,uchar num){
if(FSTAT&0x10){
FSTAT|=0x10;
}
while(num--)
{
while(!(FSTAT&0x80)) ;
*((char *)(des_addr++))= *data;
data++;
FCMD=0x25;
FSTAT|=0x80;
asm{
NOP
NOP
NOP
NOP
}
if(FSTAT&0x10){
FSTAT|=0x10;
}
}
while((FSTAT&0x40)==0);
}
在main()函数里面调用单步执行即可实现flash指定地址写入一组数组,
全速的时候会出现问题,好像应该是要放到RAM里面去执行这个函数。
我想的是写一个CopyInRAM()函数,将burst_flash机器码拷贝到RAM中,然后定义一个函数指针指向RAM地址,在main函数里调用函数指针
uchar *srcadr;
srcadr = (uchar*)&flash_burst;
此处赋值时会出现警告;
假定拷贝的RAM地址为0x0800
定义一个函数指针指到这个地址
void (*fun)(uchar *,uint,uchar) = 0x0800;
会报错!
|
|