分享stm32flash擦除(以及防止误擦除程序代码)写入.pdf

分享stm32flash擦除(以及防止误擦除程序代码)写入.pdf

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
分享 STM32 FLASH 擦除(以及防止误擦除程序代码) 、写 入 编译环境:我用的是 (Keil)MDK4.7.2 stm32 库版本:我用的是 3.5.0 一、本文不对 FLASH 的基础知识做详细的介绍,不懂得地 方请查阅有关资料。 对 STM32 内部 FLASH 进行编程操作,需要遵循以下 流程: FLASH 解锁 清除相关标志位 擦除 FLASH( 先擦除后写入的原因是为了工业上制作方 便,即物理实现方便 ) 写入 FLASH 锁定 FLASH 实例: #define FLASH_PAGE_SIZE ((uint16_t)0x400) // 如果 一页为 1K 大小 #define WRITE_START_ADDR ((uint32_t)0// 写入的起始地址 #define WRITE_END_ADDR ((uint32_t)0x0800C000)// 结束地址 uint32_t EraseCounter = 0x00, Address = 0x00;// 擦除计数, 写入地址 uint32_t Data = 0x3210ABCD;// 要写入的数据 uint32_t NbrOfPage = 0x00;// 记录要擦除的页数 volatile FLASH_Status FLASHStatus = FLASH_COMPLETE;/*FLASH 擦除完成标志 */ void main() { /* 解锁 FLASH*/ FLASH_Unlock(); /* 计算需要擦除 FLASH 页的个数 */ NbrOfPage = (WRITE_END_ADDR - WRITE_START_ADDR) / FLASH_PAGE_SIZE; /* 清除所有挂起标志位 */ FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR); /* 擦除 FLASH 页*/ for(EraseCounter = 0; (EraseCounter lt; NbrOfPage) amp;amp; (FLASHStatus == FLASH_COMPLETE); EraseCounter++) { FLASHStatus = FLASH_ErasePage(WRITE_START_ADDR + (FLASH_PAGE_SIZE * EraseCounter)); } /* 写入 FLASH */ Address = WRITE_START_ADDR; while((Address lt; WRITE_END_ADDR) amp;amp; (FLASHStatus == FLASH_COMPLETE)) { FLASHStatus = FLASH_ProgramWord(Address, Data); Address = Address + 4; } /* 锁定 FLASH */ FLASH_Lock(); } 二、 FLASH 擦除(以及防止误擦除程序代码) 1、擦除函数 FLASH_Status FLASH_ErasePage(u32 Page_Address) 只 要()里面的数是

文档评论(0)

tianya189 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档