打印
[STM32F1]

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

[复制链接]
1470|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cainiao_123|  楼主 | 2016-1-11 16:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题:想保存几个数据在FLASH里面,但数据写进去再读出为0,为何?
FLASH_Unlock();  //½âËø
        FLASH_ClearFlag(FLASH_FLAG_EOP);       
       
       
    write_state = FLASH_ErasePage(0x80026800); //²Á³ýÕûÒ³
       
        status = FLASH_ProgramHalfWord(0x80026800,dat);
        status = FLASH_ProgramHalfWord(0x80026804,dat);
        status = FLASH_ProgramHalfWord(0x80026808,dat);
    status = FLASH_ProgramHalfWord(0x8002680c,dat);

    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 赞一个!
5
cainiao_123|  楼主 | 2016-1-12 08:42 | 只看该作者
JY-DX-JY 发表于 2016-1-11 16:11
你看看status的值对不对?

这个值没错

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

413

帖子

0

粉丝