博客首页 | 排行榜 |

wolaiye945的博客

我的STM32F学习之路

个人档案
博文分类
STM32之FSMC初步  2009-02-17 20:53
FSMC就是灵活的静态存储控制器,主要对包括SRAM、PSRAM、NOR FLASH和NAND FLASH等外围存储设备的控制。特别是在片内存储空间不足的情况下,大容量的flash作为掉电不丢失的设备更是常用,例如一般mp3的关机记忆,开机直接恢复到关机之前的状态就是应用之一,在掉电之前把记忆信息写入flash,下次开机直接检查就可以了。

在此研究一下,过几天实现个小功能。
下面把最近看到比较重要的东西拿出来,备忘。

FLASH也在文件“stm32f10x_map.h”声明如下:
/* Flash registers base address */
#define FLASH_BASE ((u32)0x40022000)
/* Flash Option Bytes base address */
#define OB_BASE ((u32)0x1FFFF800)
#ifndef DEBUG
...
#ifdef _FLASH
#define FLASH ((FLASH_TypeDef *) FLASH_BASE)
#define 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 于文件“stm32f10x_lib.c”:
#ifdef _FLASH
FLASH = (FLASH_TypeDef *) FLASH_BASE;
OB = (OB_TypeDef *) OB_BASE;
#endif /*_FLASH */
为了访问 EXTI寄存器,, _FLASH 必须在文件“stm32f10x_conf.h”中定义如下:
#define _FLASH
在默认情况下,只有执行 FLASH设置(延迟,预取指,半周期)的函数式允许执行的。
如果想要执行 FLASH编写/擦除/保护函数,必须在文件“stm32f10x_conf.h”中定义_FLASH_PROG如下:
#define _FLASH_PROG



另外除了写保护,FLASH还有读保护,使用的时候需要注意下面的问题:

为了安全地编写选择字节,用户必须遵从下列操作步骤:
1.  如果想要读保护 Flash 存储器,调用函数 FLASH_ReadOutProtection
2.  调用函数 FLASH_EnableWriteProtection 来写保护 Flash 存储器部分或者全部页面
3.  调用函数 FLASH_UserOptionByteConfig 来设置用户选择字节:IWDG_SW /RST_STOP /RST_STDBY
4.  调用函数 FLASH_ProgramOptionByteData 来对指定选择字节数据地址写入半字
5.  产生复位以装入新的选择字节
类别:心得体会 |
上一篇:PCB设计要点 | 下一篇:最近小结
以下网友评论只代表其个人观点,不代表本网站的观点或立场