OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4026|回复: 1

FLASH模拟EEPROM的问题

[复制链接]

30

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2013-3-7
在线时间
6 小时
发表于 2013-6-19 19:36:50 | 显示全部楼层 |阅读模式

 各位大神:
小弟在学习FLASH模拟EEPROM的时候,根据给的例子,做了一点改进:我想把一副图片的数据保存在FLASH里面,由于图片数据时8位的,我先把数据转化为16位的,然后每转化64个,往FLASH写一次,可是不知道为什么,程序总是不能完全执行:
改动部分如下:
u16 temp[64];
const u8 TEXT_Buffer[]={"STM32 FLASH TEST"};
#define SIZE sizeof(TEXT_Buffer)        //数组长度
//#define FLASH_SAVE_ADDR  0X08070000     //设置FLASH 保存地址(必须为偶数)
#define FLASH_SAVE_ADDR  0X08000000     //设置FLASH 保存地址(必须为偶数)

 void convert()
 {
  u16 data;
 u16 i,j;

 u8 time=0;
 for(i=0,j=0;i<2048;)
 {
  data=0;
  data=image[i*2];
  data<<=8;
  data+=image[i*2+1];
  temp[j]=data;
  j++;
  
  if(j==64)
  {
    printf("开始写!\n");
     STMFLASH_Write(FLASH_SAVE_ADDR+time*128,(u16 *)temp,64);
    printf("i=%d",i);
    time++;
    j=0;
    printf("完成一次!\n");
  }
  i++;
 
  
 }
 }

int main()
{
 u16 i;
 u16 temp;
 delay_init();
 NVIC_Configuration();
 uart_init(9600);
 LED_Init();
 LCD_Init(); 
 KEY_Init();
 for(i=0;i<100;i++)
 {
  printf("进入延迟,");
  delay_ms(20);
 }
 convert();
 //read();
 while(1);
}

按照我的猜想,因为要写2048个16位数据,所以总共要写32次,可是我的程序总是在写了5、6次后就不动了,调试如下:
开始写!
111,555,666
i=63完成一次!
开始写!
111,555,666
i=127完成一次!
开始写!
111,555,666
i=191完成一次!
开始写!
111,555,666
i=

到这里就死了!
请问这可能是什么原因呢?里卖弄的111 555 666 是我在 STMFLASH_Write()函数里面加的调试信息。完整的代码在附件里面,跪求大神指教啊!

实验34 FLASH模拟EEPROM实验.7z

590.71 KB, 下载次数: 125

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

30

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2013-3-7
在线时间
6 小时
 楼主| 发表于 2013-6-20 16:16:31 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-18 14:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表