ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:21.02KB ,
资源ID:16182371      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16182371.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(最新flashsetlatency位置推荐word版 15页Word格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

最新flashsetlatency位置推荐word版 15页Word格式.docx

1、CM3将复位视作异常,优先级最高的异常。stm32f1有三种复位:系统复位、电源复位、备份区复位。前两种是真正的复位,对他的响应由硬件完成,这个响应对软件流的影响是这样的:程序指针指向0x0000 0004,这个 单元 存储的是复位服务子程序(或者汇编叫子过程),同时从0x0000 0000获取堆栈顶的地址。不同的复位类型还有对其他寄存的不同复位方式,这就完成了复位。而备份区复位则不然, 零地址存放的是堆栈顶的地址,之后就是以Reset_Handler打头的向量表。上面所说的向量表的存储从零地址开始,这是缺省的情况,可以通过NVIC的一个寄存器来重定向向量表。(权威指南7.3向量表)三、fla

2、sh读写 没仔细看,但能实现读写,不过用这两个函数的话,有一个bug,记下来回头研究。flash必须先擦再写,flash_write以后,再写确实不行了,但再次上电,就能在同一个地址写了。而且flash确实烧写好了,掉电后数据不会消失有时需要存储一些数据,在复位后仍然不会丢失,这可能就会用到片上flash,stm32的片上flash结构见。对flash的编程逻辑上是比较简单的,flash编程手册上写的很清楚,3.5固件库给出的例程为:FLASH_UnlockBank1();FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLA

3、G_WRPRTERR);FLASHStatus=FLASH_ErasePage(0x0803F800);/擦除整页 FLASHStatus=FLASH_ProgramHalfWord(0x0803F800, DATA);/写入数据,在指定地址编写半字,DATA:待写入的数据需要注意的是,在写之前必须要保证已经擦除,不然硬件不会执行编程指令。在写0时,不需要先擦除,擦除后存储单元的值为0XFF。据此可以判断:所谓的编程,就是与操作,0XFF与任何数与变成那个数,0与任何数与还是0。另外,擦除一页要21.9ms(对于2k大小的一页),比较慢。基础应用1FLASH时序延迟几个周期,等待总线同步操作。

4、推荐按照单片机系统运行频率,024MHz时,取Latency=0;2448MHz时,取Latency=1;4872MHz时,取Latency=2。所有程序中必须的用法:FLASH_SetLatency(FLASH_Latency_2);位置:RCC初始化子函数里面,时钟起振之后。基础应用2开启FLASH预读缓冲功能,加速FLASH的读取。所有程序中必须的 用法:FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);/使能或者失能预取指缓存阅读lib:调试所有外设初始化的函数。我的理解不理解,也不需要理解。只要知道所有外设在调试的时候,EWRA

5、M需要从这个函数里面获得调试所需信息的地址或者指针之类的信息。基础应用3只有一个函数debug。所有程序中必须的。#ifdef DEBUGdebug();#endifmain函数开头,声明变量之后。阅读nvic:系统中断管理。我的理解管理系统内部的中断,负责打开和关闭中断。基础应用4中断的初始化函数,包括设置中断向量表位置,和开启所需的中断两部分。 void NVIC_Configuration(void)NVIC_InitTypeDef NVIC_InitStructure; /中断管理恢复默认参数#ifdef VECT_TAB_RAM /如果C/C+ CompilerPreprocesso

6、rDefined symbols中的定义了VECT_TAB_RAM(见程序库更改内容的表格)NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); /则在RAM调试 #else /如果没有定义VECT_TAB_RAMNVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);/则在Flash里调试 #endif /结束判断语句/以下为中断的开启过程,不是所有程序必须的。/NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);/设置NVIC优先级分组,方式。/注:一共16个优先级,分为抢占式和响

7、应式。两种优先级所占的数量由此代码确定,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_InitStructu

8、re.NVIC_IRQChannelSubPriority = 0; /响应优先级/NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; /启动此通道的中断 /NVIC_Init(&NVIC_InitStructure); /中断初始化阅读rcc:单片机时钟管理。我的理解管理外部、内部和外设的时钟,设置、打开和关闭这些时钟。RCC在RCC部分学习过了,没有问题篇二:STM32F10x_Flash9.1 FLASH寄存器结构.1049 FLASH存储器(FLASH)Section 9.1 FLASH寄存器结构描述了固件函数库所使用的数据结构,Sectio

9、n 9.2 固件库函数介绍了函数库里的所有函数。9.1 FLASH寄存器结构FLASH寄存器结构,FLASH_TypeDef和OB_TypeDef,在文件中定义如下:typedef struct vu32 ACR; vu32 KEYR; vu32 OPTKEYR; vu32 SR;vu32 CR;vu32 AR; vu32 RESERVED; vu32 OBR; vu32 WRPR; FLASH_TypeDef; typedef struct vu16 RDP; vu16 USER;vu16 Data0;vu16 Data1;vu16 WRP0; vu16 WRP1;vu16 WRP2;vu1

10、6 WRP3; OB_TypeDef;Table 142.和 Table 143.例举了FLASH所有寄存器和选择字节(Option Byte OB)寄存器/* Flash registers base address */ #define FLASH_BASE (u32)0x4002201X) /* Flash Option Bytes base address */ #define OB_BASE (u32)0x1FFFF800) #ifndef DEBUG . #ifdef _FLASH #define FLASH (FLASH_TypeDef *) FLASH_BASE) #defin

11、e OB (OB_TypeDef *) OB_BASE) #endif /*_FLASH */ . #else /* DEBUG */ . #ifdef _FLASH EXT FLASH_TypeDef *FLASH; EXT OB_TypeDef *OB; #endif /*_FLASH */ . #endif 使用 Debug 模式时,初始化指针FLASH 和 OB 于文件:#ifdef _FLASH FLASH = (FLASH_TypeDef *) FLASH_BASE; OB = (OB_TypeDef *) OB_BASE; #endif /*_FLASH */为了访问 EXTI

12、寄存器,_FLASH必须在文件“sm32f10x_conf.h ”中定义如下:#define _FLASH在默认情况下,只有执行FLASH设置(延迟,预取指,半周期)的函数式允许执行的。如果想要执行 FLASH编写/擦除/保护函数,必须在文件中定义_FLASH_PROG如下:#define _FLASH_PROG9.2 FLASH库函数FLASH的库函数【见首页】9.2.1 函数FLASH_SetLatency查阅该参数可取的值/* Configure the Latency cycle: Set 2 Latency cycles */ FLASH_SetLatency(FLASH_Laten

13、cy_2);函数原型如下:void FLASH_SetLatency(u32 FLASH_Latency)/* Check the parameters */assert_param(IS_FLASH_LATENCY(FLASH_Latency);/* Sets the Latency value */FLASH-ACR &= ACR_LATENCY_Mask;/ 0x00000038,高位保留位必须保持为0ACR |= FLASH_Latency;9.2.2 函数FLASH_HalfCycleAccessCmd/* Enable the Half Cycle Flash access */

14、FLASH_HalfCycleAccessCmd(FLASH_HalfCycleAccess_Enable);void FLASH_HalfCycleAccessCmd(u32 FLASH_HalfCycleAccess)assert_param(IS_FLASH_HALFCYCLEACCESS_STATE(FLASH_HalfCycleAccess);/* Enable or disable the Half cycle access */= ACR_HLFCYA_Mask;/Mask = 0xFFFFFFF7ACR |= FLASH_HalfCycleAccess; 9.2.3 函数FLA

15、SH_PrefetchBufferCmd/* Enable The Prefetch Buffer */ FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);void FLASH_PrefetchBufferCmd(u32 FLASH_PrefetchBuffer)assert_param(IS_FLASH_PREFETCHBUFFER_STATE(FLASH_PrefetchBuffer);/* Enable or disable the Prefetch Buffer */= ACR_PRFTBE_Mask;/ Mask = 0xFFF

16、FFFEFACR |= FLASH_PrefetchBuffer;9.2.4 函数FLASH_Unlock/* Unlocks the Flash FLASH_Unlock();void FLASH_Unlock(void)/* Authorize the FPEC Access */KEYR = FLASH_KEY1;/ 0x45670123KEYR = FLASH_KEY2;/ 0xCDEF89AB/写入KEY1和KEY2后,可以解除闪存-不能设置F LASH-CR;FPEC模块不能使用 9.2.5 函数FLASH_Lock/* Locks the Flash */FLASH_Lock()

17、;void FLASH_Lock(void)/* Set the Lock Bit to lock the FPEC and the FCR */CR |= CR_LOCK_Set;/ #define CR_LOCK_Set (u32)0x00000080)/ 锁住FLASH的FPEC模块和FLASH_CR。9.2.6 函数FLASH_ErasePage/* Erases the Flash Page 0 */FLASH_Status status = FLASH_COMPLETE;status = FLASH_ErasePage(0x08000000); /0x0800000是Page0的地

18、址/*typedef enumFLASH_BUSY = 1,/=1;SR.bit0FLASH_ERROR_PG, /=2;SR.bit2FLASH_ERROR_WRP, /=3;SR.bit4FLASH_COMPLETE, /=4;SR.bit5FLASH_TIMEOUT /=5;无对应寄存器控制位FLASH_Status;*/FLASH_Status FLASH_ErasePage(u32 Page_Address)/ FLASH_COMPLETE = 4assert_param(IS_FLASH_ADDRESS(Page_Address);/ #define IS_FLASH_ADDRES

19、S(ADDRESS) (ADDRESS) = 0x08000000) & (ADDRESS) 0x0807FFFF);/大容量FLASH: 0x0807FFFF(256页);中等容量FLASH: 0x0801FFFF(128页);小容量FLASH:0x08007FFF(32页) /按最大容量判断,方便不同IC的可移植性。/* Wait for last operation to be completed */status = FLASH_WaitForLastOperation(EraseTimeout); / EraseTimeout = 0x00000FFF/【1】要擦除时,是否Flash

20、内有其他操作正在进行,并返回“Complete”状态(未必一定)。if(status = FLASH_COMPLETE)/* if the previous operation is completed, proceed to erase the page */CR|= CR_PER_Set;/【2】 0x00000002;Page Erase EnableAR = Page_Address; /【3】写入要擦除的页地址CR|= CR_STRT_Set;/ 【4】0x00000040,(擦除)操作开始!/【5】判断擦除是否完成!if(status != FLASH_BUSY)/* if the

21、 erase operation is completed, disable the PER Bit */CR &= CR_PER_Reset;/【6】0x00001FFD,擦除操作完成,要关闭“页擦除使能”/* Return the Erase Status */return status;/返回擦除完成状况。调用函数如下:/* FLASH_Status FLASH_WaitForLastOperation(u32 Timeout)/设置超时时间值Timeout = 0x0000 000F篇三:STM32-FLASHSTM32 flash操作对芯片内部flash进行操作的函数,包括读取,状态

22、,擦除,写入等等,可以允许程序去操作flash上的数据。基础应用1,FLASH时序延迟几个周期,等待总线同步操作。基础应用2,开启FLASH预读缓冲功能,加速FLASH的读取。3、 阅读lib:基础应用1,只有一个函数debug。 #ifdef DEBUG4、 阅读nvic:基础应用1,中断的初始化函数,包括设置中断向量表位置,和开启所需的中断两部分。 /则在RAM调试#else /如果没有定义VECT_TAB_RAM/则在Flash里调试#endif /结束判断语句 /抢占优先级/NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; /启动此通道的中断/NVIC_Init(&5、 阅读rcc:基础应用1:时钟的初始化函数过程void RCC_Configuration(void) /时钟初始化函数ErrorStatus HSEStartUpStatus; /等待时钟的稳定RCC_DeInit(); /时钟管理重置RCC_HSEConfig(RCC_HSE_ON); /打开外部晶振HSEStartUpStatus = RCC_WaitForHSEStartUp(); /等待外部晶振就绪if (HSEStartUpStatus = SUCCESS)/flash读取缓冲,加速 /flash操作的延时RCC_HCLKC

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1