引脚定义

FSMC配置步骤

1.使能对应引脚GPIO时钟

2.配置GPIO引脚模式

3.使能FSMC时钟

4.FSMC初始化

5.存储器块使能

举例


#define Bank1_SRAM3_ADDR ((u32)(0x68000000)) //首地址0x60000000,每块0x40000000 void SRAM_gpio_init()
{
GPIO_InitTypeDef gpiof =
{
GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 |
GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15, //FSMC_A0 - FSMC_A9
GPIO_Speed_50MHz,
GPIO_Mode_AF_PP
};
GPIO_InitTypeDef gpiog0_5 =
{
GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5, //FSMC_A10 - FSMC_A15
GPIO_Speed_50MHz,
GPIO_Mode_AF_PP
};
GPIO_InitTypeDef gpiod =
{
GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | //FSMC_A15 - FSMC_A18
GPIO_Pin_14 | GPIO_Pin_15 | GPIO_Pin_0 | GPIO_Pin_1 | //FSMC_D0 - FSMC_D3
GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10, //FSMC_D13 - FSMC_D15
GPIO_Speed_50MHz,
GPIO_Mode_AF_PP
};
GPIO_InitTypeDef gpioe =
{
//FSMC_D4 - FSMC_D12
GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15,
GPIO_Speed_50MHz,
GPIO_Mode_AF_PP
}; GPIO_InitTypeDef gpioe0_1 =
{
GPIO_Pin_0 | GPIO_Pin_1, //FSMC_NBL0-FSMC_NBL1
GPIO_Speed_50MHz,
GPIO_Mode_AF_PP
};
GPIO_InitTypeDef gpiod4_5 =
{
GPIO_Pin_4 | GPIO_Pin_5, //FSMC_NOE - FSMC_NWE
GPIO_Speed_50MHz,
GPIO_Mode_AF_PP
};
GPIO_InitTypeDef gpiog10 =
{
GPIO_Pin_10, //片选
GPIO_Speed_50MHz,
GPIO_Mode_AF_PP
}; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE, ENABLE); GPIO_Init(GPIOF, &gpiof);
GPIO_Init(GPIOG, &gpiog0_5);
GPIO_Init(GPIOD, &gpiod);
GPIO_Init(GPIOE, &gpioe);
GPIO_Init(GPIOE, &gpioe0_1);
GPIO_Init(GPIOD, &gpiod4_5);
GPIO_Init(GPIOG, &gpiog10);
} void FSMC_sram_init()
{
FSMC_NORSRAMInitTypeDef fsmc = {0};
FSMC_NORSRAMTimingInitTypeDef FSMC_ReadWriteTimingStruct = {0}; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE); FSMC_ReadWriteTimingStruct.FSMC_AddressSetupTime = 0x00;
FSMC_ReadWriteTimingStruct.FSMC_AddressHoldTime = 0x00;
FSMC_ReadWriteTimingStruct.FSMC_DataSetupTime = 0x08;
FSMC_ReadWriteTimingStruct.FSMC_BusTurnAroundDuration = 0x00;
FSMC_ReadWriteTimingStruct.FSMC_CLKDivision = 0x00;
FSMC_ReadWriteTimingStruct.FSMC_DataLatency = 0x00;
FSMC_ReadWriteTimingStruct.FSMC_AccessMode = FSMC_AccessMode_A; fsmc.FSMC_Bank = FSMC_Bank1_NORSRAM3;
fsmc.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
fsmc.FSMC_MemoryType = FSMC_MemoryType_SRAM;
fsmc.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
fsmc.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
fsmc.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable;
fsmc.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
fsmc.FSMC_WrapMode = FSMC_WrapMode_Disable;
fsmc.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
fsmc.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
fsmc.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
fsmc.FSMC_ExtendedMode = FSMC_ExtendedMode_Enable; //扩展模式使能
fsmc.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
fsmc.FSMC_ReadWriteTimingStruct = &FSMC_ReadWriteTimingStruct;
fsmc.FSMC_WriteTimingStruct = &FSMC_ReadWriteTimingStruct;
FSMC_NORSRAMInit(&fsmc); FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM3, ENABLE);
} void SRAM_read(u8 *buf, u32 addr, u32 num)
{
u32 i = 0; for(i = 0; i < num; i++)
{
buf[i] = *(u8*)(Bank1_SRAM3_ADDR + addr + i);
}
} void SRAM_write(u8 *buf, u32 addr, u32 num)
{
u32 i = 0;
u8 *p = (u8*)(Bank1_SRAM3_ADDR + addr); for(i = 0; i < num; i++)
{
*(p + i) = buf[i];
}
}

最新文章

  1. python 学习总结
  2. WebBrowser 禁用右键
  3. WPF优化体验&lt;一&gt;
  4. Effective C++ Item 37 绝不又一次定义继承而来的缺省參数值
  5. JavaScript生成GUID的多种算法小结
  6. C# 获取网页数据、获取本机IP 分类: C# 2014-12-16 14:59 308人阅读 评论(0) 收藏
  7. ASP.NET datable导出excel
  8. powerdesigner数据建模
  9. LeetCodeOJ. String to Integer (atoi)
  10. 重新想象 Windows 8 Store Apps (22) - 文件系统: 访问文件夹和文件, 通过 AQS 搜索本地文件
  11. POJ 2231 Moo Volume
  12. Ubuntu编译安装PHP7
  13. php-递归创建级联目录
  14. BIP Requests Are Failing With Error &quot;OPP Error Oracle.apps.xdo.XDOException: Error Creating Lock Fil
  15. 【Qt编程】基于Qt的词典开发系列&lt;四&gt;--无边框窗口的缩放与拖动
  16. java变量和javascript变量之间的传递
  17. Jenkins [Error] at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:192)
  18. JXOI 2017 简要题解
  19. Node.js的异步IO和事件轮询
  20. reac-native环境搭建

热门文章

  1. osg编译日志
  2. 零基础学Python-第二章 :Python基础语法-05.基础数据类型
  3. 判断本网段有多少可用的ip地址
  4. SAP RFC和BAPI
  5. ABAP DEMO 下拉框
  6. Spring MVC 验证表单
  7. sed替换字符串(变量)
  8. WPF 使用winform的webbrowser
  9. Andrew Ng机器学习课程9
  10. Samba访问控制smb.conf