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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

STM32F10xFlash.docx

1、STM32F10xFlash9.1 FLASH寄存器结构 .1049.2 FLASH库函数.105No函数名描述1FLASH_SetLatency设置代码延时值2FLASH_HalfCycleAccessCmd使能或者失能FLASH半周期访问3FLASH_PrefetchBufferCmd使能或者失能预取指缓存4FLASH_Unlock解锁FLASH编写擦除控制器5FLASH_Lock锁定FLASH编写擦除控制器6FLASH_ErasePage擦除一个FLASH页面7FLASH_EraseAllPages擦除全部FLASH页面8FLASH_EraseOptionBytes擦除FLASH选择字节

2、9FLASH_ProgramWord在指定地址编写一个字10FLASH_ProgramHalfWord在指定地址编写半字11FLASH_ProgramOptionByteData在指定FLASH选择字节地址编写半字12FLASH_EnableWriteProtection对期望的页面写保护(OB寄存器操作)13FLASH_ReadOutProtection使能或失能读出保护14FLASH_UserOptionByteConfig编写FLASH用户选择字节:IWDG_SW /RST_STOP /RST_STDBY 15FLASH_GetUserOptionByte返回FLASH用户选择字节的值1

3、6FLASH_GetWriteProtectionOptionByte返回FLASH写保护选择字节的值17FLASH_GetReadOutProtectionStatus检查FLASH读出保护设置与否18FLASH_GetPrefetchBufferStatus检查FLASH预取指缓存设置与否19FLASH_ITConfig使能或者失能指定FLASH中断20FLASH_GetFlagStatus检查指定的FLASH标志位设置与否21FLASH_ClearFlag清除FLASH待处理标志位22FLASH_GetStatus返回FLASH状态23FLASH_WaitForLastOperation

4、等待某一个Flash操作完成,或发生TIMEOUT9 FLASH存储器(FLASH) Section 9.1 FLASH寄存器结构描述了固件函数库所使用的数据结构,Section 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;

5、typedef struct vu16 RDP;vu16 USER;vu16 Data0;vu16 Data1;vu16 WRP0;vu16 WRP1;vu16 WRP2;vu16 WRP3;OB_TypeDef;Table 142.和 Table 143.例举了FLASH 所有寄存器和选择字节(Option Byte OB)寄存器 Table 142. FLASH 寄存器寄存器描述ACRFLASH访问控制寄存器KEYRFPEC密钥寄存器OPTKEYR选择字节密钥寄存器SRFLASH状态寄存器CRFLASH控制寄存器ARFLASH地址寄存器OBR选择字节和状态寄存器WRPR选择字节写保护寄存器

6、 Table 143. Option Byte(OB)寄存器 寄存器描述RDR读出选择字节USER用户选择字节Data0Data0选择字节Data1Data1选择字节WRP0写保护0选择字节WRP1写保护1选择字节WRP2写保护2选择字节WRP3写保护3选择字节FLASH 也在文件“stm2f10x_map.h”声明如下: /* Flash registers base address */#define FLASH_BASE (u32)0x40022000)/* Flash Option Bytes base address */#define OB_BASE (u32)0x1FFFF800

7、)#ifndef DEBUG.#ifdef _FLASH#define FLASH (FLASH_TypeDef *) FLASH_BASE)#define OB (OB_TypeDef *) OB_BASE)#endif /*_FLASH */.#else /* DEBUG */.#ifdef _FLASHEXT FLASH_TypeDef *FLASH;EXT OB_TypeDef *OB;#endif /*_FLASH */.#endif使用 Debug 模式时,初始化指针FLASH 和 OB 于文件: #ifdef _FLASHFLASH = (FLASH_TypeDef *) FLA

8、SH_BASE;OB = (OB_TypeDef *) OB_BASE;#endif /*_FLASH */ 为了访问 EXTI 寄存器,_FLASH必须在文件“sm32f10x_conf.h ”中定义如下: #define _FLASH在默认情况下,只有执行FLASH设置(延迟,预取指,半周期)的函数式允许执行的。如果想要执行 FLASH 编写/擦除/保护函数,必须在文件中定义_FLASH_PROG如下: #define _FLASH_PROG9.2 FLASH库函数 FLASH的库函数【见首页】9.2.1 函数FLASH_SetLatency Table 145. 函数 FLASH_Set

9、Latency函数名FLASH_SetLatency 函数原形void FLASH_SetLatency(u32 FLASH_Latency)功能描述设置代码延时值输入参数FLASH_Latency:指定FLASH_Latency的值输出参数无返回值无先决条件无被调用函数无FLASH_Latency:用来设置 FLASH 存储器延时时钟周期数。见 Table 146. 查阅该参数可取的值 Table 146. FLASH_Latency 值FLASH_Latency描述/ACR.bit2-0Value意义FLASH_Latency_00 SYSCLK延时周期0x000000000个等待状态,当

10、0SYSCLK 24MHzFLASH_Latency_11 SYSCLK延时周期0x000000011个等待状态,当24MHzSYSCLK48MHzFLASH_Latency_22 SYSCLK延时周期0x000000022个等待状态,当48MHzACR &= ACR_LATENCY_Mask;/ 0x00000038,高位保留位必须保持为0 FLASH-ACR |= FLASH_Latency;9.2.2 函数FLASH_HalfCycleAccessCmd Table 147. 函数 FLASH_HalfCycleAccessCmd函数名FLASH_HalfCycleAccessCmd 函

11、数原形void FLASH_HalfCycleAccessCmd(u32 FLASH_HalfCycleAccess)功能描述使能或者失能FLASH半周期访问输入参数FLASH_HalfCycleAccess:FLASH_HalfCycle访问模式输出参数无返回值无先决条件无被调用函数无FLASH_HalfCycleAccess :用来选择 FLASH 半周期访问的模式。 Table 148. FLASH_HalfCycleAccess 值FLASH_HalfCycleAccess描述/ACR.HLFCYAValue/bit4FLASH_HalfCycleAccess_Enable半周期访问使

12、能0x00000008FLASH_HalfCycleAccess_Disable半周期访问失能0x00000000例: /* Enable the Half Cycle Flash access */ FLASH_HalfCycleAccessCmd(FLASH_HalfCycleAccess_Enable); 函数原型如下:void FLASH_HalfCycleAccessCmd(u32 FLASH_HalfCycleAccess) /* Check the parameters */ assert_param(IS_FLASH_HALFCYCLEACCESS_STATE(FLASH_Ha

13、lfCycleAccess); /* Enable or disable the Half cycle access */ FLASH-ACR &= ACR_HLFCYA_Mask;/Mask = 0xFFFFFFF7 FLASH-ACR |= FLASH_HalfCycleAccess; 9.2.3 函数FLASH_PrefetchBufferCmd Table 149. 函数 FLASH_PrefetchBufferCmd函数名FLASH_PrefetchBufferCmd 函数原形void FLASH_PrefetchBufferCmd(u32 FLASH_PrefetchBuffer)

14、功能描述使能或失能预取指缓存输入参数FLASH_PrefetchBuffer:预取指缓存状态输出参数无返回值无先决条件无被调用函数无FLASH_PrefetchBuffer:用来选择 FLASH 预取指缓存的模式。 Table 150. FLASH_PrefetchBuffer 值FLASH_PrefetchBuffer描述/ACR. PRFTBEValue/bit5FLASH_PrefetchBuffer_Enable预取指缓存使能0x00000010FLASH_PrefetchBuffer_Disable预取指缓存失能0x00000000例:/* Enable The Prefetch B

15、uffer */ FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); 函数原型如下:void FLASH_PrefetchBufferCmd(u32 FLASH_PrefetchBuffer) /* Check the parameters */ assert_param(IS_FLASH_PREFETCHBUFFER_STATE(FLASH_PrefetchBuffer); /* Enable or disable the Prefetch Buffer */ FLASH-ACR &= ACR_PRFTBE_Mask;/ Mask =

16、0xFFFFFFEF FLASH-ACR |= FLASH_PrefetchBuffer;9.2.4 函数FLASH_Unlock Table 151. 函数 FLASH_Unlock 函数名FLASH_Unlock 函数原形void FLASH_Unlock(void)功能描述解锁FLASH编写擦除控制器输入参数无输出参数无返回值无先决条件无被调用函数无例: /* Unlocks the Flash FLASH_Unlock(); 函数原型如下:void FLASH_Unlock(void) /* Authorize the FPEC Access */ FLASH-KEYR = FLASH

17、_KEY1;/ 0x45670123 FLASH-KEYR = FLASH_KEY2;/ 0xCDEF89AB/写入KEY1和KEY2后,可以解除闪存-不能设置FLASH-CR;FPEC模块不能使用9.2.5 函数FLASH_Lock Table 152. 函数 FLASH_Lock 函数名FLASH_Lock 函数原形void FLASH_Lock(void)功能描述锁定 FLASH编写和擦除控制器(FPEC)输入参数无输出参数无返回值无先决条件无被调用函数无例: /* Locks the Flash */ FLASH_Lock(); 函数原型如下:void FLASH_Lock(void)

18、 /* Set the Lock Bit to lock the FPEC and the FCR */ FLASH-CR |= CR_LOCK_Set;/ #define CR_LOCK_Set (u32)0x00000080)/ 锁住FLASH的FPEC模块和FLASH_CR。9.2.6 函数FLASH_ErasePage Table 153. 函数 FLASH_ErasePage函数名FLASH_ErasePage函数原形FLASH_Status FLASH_ErasePage(u32 Page_Address)功能描述擦除一个FLASH页面输入参数无输出参数无返回值擦除操作状态先决条件

19、无被调用函数无例: /* Erases the Flash Page 0 */ FLASH_Status status = FLASH_COMPLETE; status = FLASH_ErasePage(0x08000000); /0x0800000是Page0的地址/*typedef enum FLASH_BUSY = 1,/=1;SR.bit0 FLASH_ERROR_PG, /=2;SR.bit2 FLASH_ERROR_WRP, /=3;SR.bit4 FLASH_COMPLETE, /=4;SR.bit5 FLASH_TIMEOUT /=5;无对应寄存器控制位FLASH_Statu

20、s;*/函数原型如下:FLASH_Status FLASH_ErasePage(u32 Page_Address) FLASH_Status status = FLASH_COMPLETE;/ FLASH_COMPLETE = 4 /* Check the parameters */ assert_param(IS_FLASH_ADDRESS(Page_Address); / #define IS_FLASH_ADDRESS(ADDRESS) (ADDRESS) = 0x08000000) & (ADDRESS) CR|= CR_PER_Set;/【2】 0x00000002;Page Era

21、se Enable FLASH-AR = Page_Address; /【3】写入要擦除的页地址 FLASH-CR|= CR_STRT_Set;/ 【4】0x00000040,(擦除)操作开始! /* Wait for last operation to be completed */ status = FLASH_WaitForLastOperation(EraseTimeout);/【5】判断擦除是否完成! if(status != FLASH_BUSY) /* if the erase operation is completed, disable the PER Bit */ FLAS

22、H-CR &= CR_PER_Reset;/【6】0x00001FFD,擦除操作完成,要关闭“页擦除使能” /* Return the Erase Status */ return status;/返回擦除完成状况。调用函数如下:/*FLASH_Status FLASH_WaitForLastOperation(u32 Timeout)/设置超时时间值Timeout = 0x0000 000F FLASH_Status status = FLASH_COMPLETE; /* Check for the Flash Status */ status = FLASH_GetStatus(); /*

23、 Wait for a Flash operation to complete or a TIMEOUT to occur */ while(status = FLASH_BUSY) & (Timeout != 0x00) delay(); status = FLASH_GetStatus(); Timeout-; if(Timeout = 0x00 ) status = FLASH_TIMEOUT; /=5 /* Return the operation status */ return status;*/-/*static void delay(void) vu32 i = 0; for(

24、i = 0xFF; i != 0; i-) /256个for()周期*/-/*FLASH_Status FLASH_GetStatus(void)/本函数不判断Timeout(=5):TimeOut不同操作,所需时间不同 FLASH_Status flashstatus = FLASH_COMPLETE;/4 if(FLASH-SR & FLASH_FLAG_BSY) = FLASH_FLAG_BSY) flashstatus = FLASH_BUSY;/1 else if(FLASH-SR & FLASH_FLAG_PGERR) flashstatus = FLASH_ERROR_PG;/2

25、else if(FLASH-SR & FLASH_FLAG_WRPRTERR)flashstatus = FLASH_ERROR_WRP; /3 elseflashstatus = FLASH_COMPLETE; /4 /* Return the Flash Status */ return flashstatus;*/9.2.7 函数FLASH_EraseAllPages Table 154. 函数 FLASH_EraseAllPages 函数名FLASH_EraseAllPages 函数原形FLASH_Status FLASH_EraseAllPages(void)功能描述擦除全部FLASH页面输入参数无输出参数无返回值擦除操作状态先决条件无被调用函数无例: /* Erases the Flash */ FLASH_Status status = FLASH_COMPLETE; status = FLASH_EraseAllPages(); 函数原型如下:FLASH_Status FLASH_EraseAllPages(void) FLASH_Status status = FLASH_COMPLETE; /* Wait for last operation to be completed */ status = FLASH_WaitForLastOperat

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

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