




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
STM32 flash操作对芯片内部flash进行操作的函数,包括读取,状态,擦除,写入等等,可以允许程序去操作flash上的数据。一、存储器映射 1、统一编址,程序存储器、数据存储器、外设寄存器组织在一个4GB的地址空间。2、小端格式 3、映像(stm32f107,256KB产品) 可以看到,所谓的256KB闪存,是指主存储,片上FLASH如下图所示:介绍了片上的资源后,来看他们的地址映像。芯片将4GB的空间,划分为8个512MB的块(block),这些块有些是整块不用的,芯片对地址的安排可以参考数据手册,memory mapping章节中的那个图。只有block1、2、3、7是使用的。地址中block7是核内的外设对应的地址,block2是其他外设对应的地址。block1的低地址64KB是片上SRAM,block0则如下图 option bytes即是选项字节;system memory就是系统存储,也即片上ROM;这两部分就是所谓信息块。Flash就是指主存储,有256KB。 再往下看alias to flash or system memory.这个区域256KB就是启动开始的区域。这个区域并没有一个自己的存储器,只是根据BOOT0、BOOT1的接法来选择哪个存储器映射到这个地址上。如下图选择用户闪存启动,是典型的做法;选择系统存储器,则在ST烧写进去的自举程序引导下,通过USART1下载程序;选择从SRAM执行代码则方便调试,比较快。二、复位 CM3将复位视作异常,优先级最高的异常。stm32f1有三种复位:系统复位、电源复位、备份区复位。前两种是真正的复位,对他的响应由硬件完成,这个响应对软件流的影响是这样的:程序指针指向0x0000 0004,这个单元存储的是复位服务子程序(或者汇编叫子过程),同时从0x0000 0000获取堆栈顶的地址。不同的复位类型还有对其他寄存的不同复位方式,这就完成了复位。而备份区复位则不然, 零地址存放的是堆栈顶的地址,之后就是以Reset_Handler打头的向量表。 上面所说的向量表的存储从零地址开始,这是缺省的情况,可以通过NVIC的一个寄存器来重定向向量表。(权威指南7.3向量表)三、flash读写没仔细看,但能实现读写,不过用这两个函数的话,有一个bug,记下来回头研究。flash必须先擦再写,flash_write以后,再写确实不行了,但再次上电,就能在同一个地址写了。而且flash确实烧写好了,掉电后数据不会消失有时需要存储一些数据,在复位后仍然不会丢失,这可能就会用到片上flash,stm32的片上flash结构见stm32的存储器与复位。对flash的编程逻辑上是比较简单的,flash编程手册上写的很清楚,3.5固件库给出的例程为:FLASH_UnlockBank1();FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);FLASHStatus=FLASH_ErasePage(0x0803F800);/擦除整页FLASHStatus=FLASH_ProgramHalfWord(0x0803F800, DATA);/写入数据,在指定地址编写半字,DATA:待写入的数据需要注意的是,在写之前必须要保证已经擦除,不然硬件不会执行编程指令。在写0时,不需要先擦除,擦除后存储单元的值为0XFF。据此可以判断:所谓的编程,就是与操作,0XFF与任何数与变成那个数,0与任何数与还是0。另外,擦除一页要21.9ms(对于2k大小的一页),比较慢。基础应用1FLASH时序延迟几个周期,等待总线同步操作。推荐按照单片机系统运行频率,024MHz时,取Latency=0;2448MHz时,取Latency=1;4872MHz时,取Latency=2。所有程序中必须的用法:FLASH_SetLatency(FLASH_Latency_2);位置:RCC初始化子函数里面,时钟起振之后。基础应用2开启FLASH预读缓冲功能,加速FLASH的读取。所有程序中必须的用法:FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);/使能或者失能预取指缓存位置:RCC初始化子函数里面,时钟起振之后。阅读lib:调试所有外设初始化的函数。我的理解不理解,也不需要理解。只要知道所有外设在调试的时候,EWRAM需要从这个函数里面获得调试所需信息的地址或者指针之类的信息。基础应用3只有一个函数debug。所有程序中必须的。用法: #ifdef DEBUGdebug();#endif位置:main函数开头,声明变量之后。阅读nvic:系统中断管理。我的理解管理系统内部的中断,负责打开和关闭中断。基础应用4中断的初始化函数,包括设置中断向量表位置,和开启所需的中断两部分。所有程序中必须的。用法: void NVIC_Configuration(void) NVIC_InitTypeDef NVIC_InitStructure; /中断管理恢复默认参数#ifdef VECT_TAB_RAM /如果C/C+ CompilerPreprocessorDefined symbols中的定义了VECT_TAB_RAM(见程序库更改内容的表格) NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); /则在RAM调试#else /如果没有定义VECT_TAB_RAM NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);/则在Flash里调试#endif /结束判断语句/以下为中断的开启过程,不是所有程序必须的。 /NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);/设置NVIC优先级分组,方式。/注:一共16个优先级,分为抢占式和响应式。两种优先级所占的数量由此代码确定,NVIC_PriorityGroup_x可以是0、1、2、3、4,分别代表抢占优先级有1、2、4、8、16个和响应优先级有16、8、4、2、1个。规定两种优先级的数量后,所有的中断级别必须在其中选择,抢占级别高的会打断其他中断优先执行,而响应级别高的会在其他中断执行完优先执行。/NVIC_InitStructure.NVIC_IRQChannel = 中断通道名; /开中断,中断名称见函数库/NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; /抢占优先级/NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; /响应优先级/NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; /启动此通道的中断/NVIC_Init(&NVIC_InitStructure); /中断初始化阅读rcc:单片机时钟
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO 8000-220:2025 EN Data quality - Part 220: Sensor data: Quality measurement
- 小区美容院合伙经营合同5篇
- 快递员招聘合同范本
- 轻钢结构合同范本
- 福建省公民出国旅游合同2篇
- 街舞机构续费合同范本
- 医院地坪采购合同范本
- 入团申请书高中生(5篇)
- 培优补差工作计划怎么写(5篇)
- 志愿者的英文题目及答案
- 2026届四川省宜宾市普通高中高一化学第一学期期末统考试题含解析
- 景区导览智能导览设备市场前景报告
- 山河已无恙+吾辈当自强+课件-2025-2026学年高二上学期用《南京照相馆》和731上一节思政课
- T-SXCAS 028-2024 公路海绵设施设计标准
- 工厂利器管理办法
- 职级职等管理办法
- 互联网金融(第二版)课件 第1章 导论
- 锁骨骨折病人护理查房
- 电解质紊乱患者的护理
- 抚州辅警考试试题及答案
- 2025年河南高考地理真题(答案版)
评论
0/150
提交评论