我的程序里面有个函数
void DRAWFILE_Save(uint8 fname[]) //保存设计文件,fname--是文件名
{
uint32 j,l,m;
uint16 k;
j=0;
k=0;
l=0;
m=0;
FLASH_Sector_File_Erase(); //清除扇区
//保存文件名
DRAWFILE_Filename_Write(fname);
//保存缓冲区的三个指针
FLASH_Write_Byte(DRAWFILE_FRONT_SADDR,drawfile_front); //低8位
FLASH_Write_Byte(DRAWFILE_FRONT_SADDR+1,drawfile_front>>8); //高8位
FLASH_Write_Byte(DRAWFILE_REAR_SADDR,drawfile_rear); //低8位
FLASH_Write_Byte(DRAWFILE_REAR_SADDR+1,drawfile_rear>>8); //高8位
FLASH_Write_Byte(DRAWFILE_TEMP_FRONT_SADDR,drawfile_temp_front); //低8位
FLASH_Write_Byte(DRAWFILE_TEMP_FRONT_SADDR+1,drawfile_temp_front>>8); //高8位
//保存文件缓冲部分
m=16;
for(j=0;j<drawfile_rear;j++)
{
FLASH_Write_Byte((uint32)DRAWFILE_BUF_SADDR+j*m+0,drawfile[j].id);
k=INT16_To_Uint16(drawfile[j].dat[0]);
FLASH_Write_Byte((uint32)DRAWFILE_BUF_SADDR+j*m+1,k);
FLASH_Write_Byte((uint32)DRAWFILE_BUF_SADDR+j*m+2,k>>8);
k=INT16_To_Uint16(drawfile[j].dat[1]);
FLASH_Write_Byte((uint32)DRAWFILE_BUF_SADDR+j*m+3,k);
FLASH_Write_Byte((uint32)DRAWFILE_BUF_SADDR+j*m+4,k>>8);
k=INT16_To_Uint16(drawfile[j].dat[2]);
FLASH_Write_Byte((uint32)DRAWFILE_BUF_SADDR+j*m+5,k);
FLASH_Write_Byte((uint32)DRAWFILE_BUF_SADDR+j*m+6,k>>8);
k=INT16_To_Uint16(drawfile[j].dat[3]);
FLASH_Write_Byte(DRAWFILE_BUF_SADDR+j*m+7,k);
FLASH_Write_Byte(DRAWFILE_BUF_SADDR+j*m+8,k>>8);
k=INT16_To_Uint16(drawfile[j].dat[4]);
FLASH_Write_Byte((uint32)DRAWFILE_BUF_SADDR+j*m+9,k);
FLASH_Write_Byte((uint32)DRAWFILE_BUF_SADDR+j*m+10,k>>8);
k=INT16_To_Uint16(drawfile[j].dat[5]);
FLASH_Write_Byte((uint32)DRAWFILE_BUF_SADDR+j*m+11,k);
FLASH_Write_Byte((uint32)DRAWFILE_BUF_SADDR+j*m+12,k>>8);
k=INT16_To_Uint16(drawfile[j].dat[6]);
FLASH_Write_Byte((uint32)DRAWFILE_BUF_SADDR+j*m+13,k);
FLASH_Write_Byte((uint32)DRAWFILE_BUF_SADDR+j*m+14,k>>8);
FLASH_Write_Byte((uint32)DRAWFILE_BUF_SADDR+j*m+15,drawfile[j].slen);
}
//保存文件缓冲部分
for(j=0;j<FILE_NULL_FLG_LEN;j++)
{
FLASH_Write_Byte((uint32)FILE_NULL_FLG_SADDR+j,((uint8)0x50)+(uint8)j);
}
}
这个函数主要是向SPI FLASH里面保存数据。
这个函数在程序中的任何地方没有被调用。
现在的问题是:
当加上函数中: //保存文件缓冲部分 之间的代码后,编译正常,但仿真运行出现下图错误。。。。