[STM32F1] F103RCT的内部FLASH为何不能当EEPROM用?

[复制链接]
 楼主| cainiao_123 发表于 2016-1-11 16:02 | 显示全部楼层 |阅读模式
如题:想保存几个数据在FLASH里面,但数据写进去再读出为0,为何?
  1. FLASH_Unlock();  //½âËø
  2.         FLASH_ClearFlag(FLASH_FLAG_EOP);       
  3.        
  4.        
  5.     write_state = FLASH_ErasePage(0x80026800); //²Á³ýÕûÒ³
  6.        
  7.         status = FLASH_ProgramHalfWord(0x80026800,dat);
  8.         status = FLASH_ProgramHalfWord(0x80026804,dat);
  9.         status = FLASH_ProgramHalfWord(0x80026808,dat);
  10.     status = FLASH_ProgramHalfWord(0x8002680c,dat);

  11.     Flash_rd_dat_32bit(0x80026800,fla_buf_32,8); //¶ÁÈ¡¸ÕдÈëµÄÊý¾Ý
JY-DX-JY 发表于 2016-1-11 16:11 | 显示全部楼层
你看看status的值对不对?
huangcunxiake 发表于 2016-1-11 16:16 | 显示全部楼层
FLASH_SAVE_ADDR  0X08030000                          256KB的最高地址为0x08040000

评分

参与人数 1威望 +3 收起 理由
cainiao_123 + 3 很给力!

查看全部评分

huangcunxiake 发表于 2016-1-11 16:17 | 显示全部楼层
有这样的帖子:
STM32F103RCT6写内部FLASH实验,复位后再次读取却都是65535,说好的掉电存储呢?FLASH 256k

u16 SET_DATA[7] = {400,2000,400,2000,100,200,2013};
u16 Read_flash_buf[7];
int main(void)
{         
Stm32_Clock_Init(9); //系统时钟设置
delay_init(72);            //延时初始化
uart_init(72,4800);//串口初始化

STMFLASH_Read(FLASH_SAVE_ADDR,Read_flash_buf,7);

for(i=0;i<7;i++)
printf("%d  ",Read_flash_buf);
printf("\t\n");

SET_DATA[6] = 2014;

STMFLASH_Write(FLASH_SAVE_ADDR,SET_DATA,7);

while(1);



----------------------
结果是:
已经解决 ,犯了个低级错误。。FLASH_SAVE_ADDR  0X08030000                          256KB的最高地址为0x08040000

评分

参与人数 1威望 +3 收起 理由
cainiao_123 + 3 赞一个!

查看全部评分

 楼主| cainiao_123 发表于 2016-1-12 08:42 | 显示全部楼层
JY-DX-JY 发表于 2016-1-11 16:11
你看看status的值对不对?

这个值没错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

413

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

25

主题

413

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部