`在这里插入代码片
typedef struct
{
uint32_t FSMC_AddressSetupTime; //地址建立时间
uint32_t FSMC_AddressHoldTime; //地址保持时间
uint32_t FSMC_DataSetupTime; /*数据建立时间 */
uint32_t FSMC_BusTurnAroundDuration; /*本成员设置总线转换周期,在 NOR FLASH 存储器中,地址线与数据线可以分时复用,
总线转换周期就是指总线在这两种状态间切换需要的延时,防止冲突。控制其它存储
器时这个参数无效,配置为 0 即可。 @note: It is only used for multiplexed NOR Flash memories. */
uint32_t FSMC_CLKDivision; /*本成员用于设置时钟分频,它以 HCLK 时钟作为输入,经过 FSMC_CLKDivision 分频
后输出到 FSMC_CLK 引脚作为通讯使用的同步时钟。 控制其它异步通讯的存储器时
这个参数无效,配置为 0 即可。@note: This parameter is not used for asynchronous NOR Flash, SRAM or ROM accesses. */
uint32_t FSMC_DataLatency; /*本成员设置数据保持时间,它表示在读取第一个数据之前要等待的周期数,该周期指
同步时钟的周期,本参数仅用于同步 NOR FLASH 类型的存储器,控制其它类型的存
储器时,本参数无效。*/
uint32_t FSMC_AccessMode; /*本成员设置存储器访问模式,不同的模式下 FSMC 访问存储器地址时引脚输出的时序
不一样,可选 FSMC_AccessMode_A/B/C/D 模式。 一般来说控制 SRAM 时使用 A 模式。 */
}FSMC_NORSRAMTimingInitTypeDef;
typedef struct
5 {
6 uint32_t FSMC_Bank; /*设置要控制的 Bank 区域 */
7 uint32_t FSMC_DataAddressMux; /*设置地址总线与数据总线是否复用 */
8 uint32_t FSMC_MemoryType; /*设置存储器的类型 */
9 uint32_t FSMC_MemoryDataWidth; /*设置存储器的数据宽度*/
10 uint32_t FSMC_BurstAccessMode; /*设置是否支持突发访问模式,只支持同步类型的存储器 突发访问模式是指发送一个地址后连续访问多个数据,非突发模式下每访问一个数据都
需要输入一个地址,仅在控制同步类型的存储器时才能使用突发模式。*/
11 uint32_t FSMC_AsynchronousWait; /*设置是否使能在同步传输时的等待信号, */
12 uint32_t FSMC_WaitSignalPolarity; /*设置等待信号的极性*/
13 uint32_t FSMC_WrapMode; /*设置是否支持对齐的突发模式 */
14 uint32_t FSMC_WaitSignalActive; /*配置等待信号在等待前有效还是等待期间有效 */
15 uint32_t FSMC_WriteOperation; /*设置是否写使能 */
16 uint32_t FSMC_WaitSignal; /*设置是否使能等待状态插入 */
17 uint32_t FSMC_ExtendedMode; /*设置是否使能扩展模式 */
18 uint32_t FSMC_WriteBurst; /*设置是否使能写突发操作*/
19 /*当不使用扩展模式时,本参数用于配置读写时序,否则用于配置读时序*/
20 FSMC_NORSRAMTimingInitTypeDef* FSMC_ReadWriteTimingStruct;
21 /*当使用扩展模式时,本参数用于配置写时序*/
22 FSMC_NORSRAMTimingInitTypeDef* FSMC_WriteTimingStruct;
23 }FSMC_NORSRAMInitTypeDef;
FSMC_Bank可选用的宏参数
懒得写了,直接看野火的书吧!