加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

stm32掉电前的数据存储到flash

发布时间:2020-12-15 20:01:15 所属栏目:百科 来源:网络整理
导读:********************************************************************************************* 对FLASH 的操作 ********************************************************************************************* FLASh 必须是先擦 后 写 下面的函数是
********************************************************************************************* 对FLASH 的操作 ********************************************************************************************* FLASh 必须是先擦 后 写 下面的函数是分析案例 void FLASH_WriteByte(u32 addr,u16 flashdata1) { ? ?FLASH_Status FLASHstatus = FLASH_COMPLETE; ? ?FLASH_Unlock();//解锁FLASH编程擦除控制器 ? // FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);//清除标志位 ? ?FLASH_ClearFlag(FLASH_FLAG_BSY|FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPRTERR); ? ? ? ? ? ? ?//******************************************************************** ? ? ? ? ? ? // ? FLASH_FLAG_BSY ? ? ? ? ? ?FLASH忙标志位 ? ? ? ? ? ? // ? ?FLASH_FLAG_EOP ? ? ? ? ? ?FLASH操作结束标志位 ? ? ? ? ? ?// ? ? ?FLASH_FLAG_PGERR ? ? ? ? ?FLASH编写错误标志位 ? ? ? ? ? ?// ? ? ? FLASH_FLAG_WRPRTERR ? ? ? FLASH页面写保护错误标净 ? ? ? ? ? ? ? ? ? ?//***********************************************************************/ ? ?FLASHstatus=FLASH_ErasePage(addr);//擦除指定地址页 ? ?FLASHstatus=FLASH_ProgramHalfWord(addr,flashdata1);//从指定页的addr地址开始写 ? ?//FLASH_ClearFlag(FLASH_FLAG_BSY|FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPRTERR);? ? ?FLASH_Lock();//锁定FLASH编程擦除控制 } ? ?基本顺序:解锁->清除标志位(可以不要)->擦除->写半字->清楚标志位(也可以不要)->上锁。 ? ?如果 FLASH_START_ADDR是宏定义的0x8000000+2048*255 ? ? 1. 0x8000000是Flash的起始地址? ? ? 2. 2048是因为我用的是大容量芯片,根据上一笔记Flash地址可以看出芯片每页容量2K,即2048字节, ? ? 3. 255表示芯片的最后一页,这个根据不同芯片而定。之所以从后面页写起可以防止储存数据破坏用户程序。 ? ? 4. addr*2是因为每个数据占用2字节(半字),虽然写入的是1字节数据,但是编程是2字节为单位, ? ? ? ? ? ? ?也就是说一个字节的数据也会占用两个字节地址。 这个子函数就是将数据flashdata1写到地址addr中去。数据的长度是可变的。 ? ? ? 当需要读入数据的时候可以直接访问地址, ? ? ? ? ? 如:rdata=*(u16 *)0x08014000; ? //读flash中默认数据 ? ? ? ? ? ? ? 0x08014000是存储的地址。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读