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设计要点 | 下一篇:最近小结