引脚定义

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];
}
}

stm32 FSMC-外扩SRAM IS62WV51216的更多相关文章

  1. stm32 外扩SRAM使用问题

    当把外扩SRAM内存拷贝到片上SRAM内存时使用内存拷贝函数memset()或者原子定义的mymemset()函数,编译器会提示空间不足. 原因是这两个函数一个是只能对片上SRAM操作,一个是只能对外 ...

  2. stm32f103vct6外扩sram芯片

    STM32F103是一款高性价比.多功能的单片机,配备常用的32位单片机片外资源,基于ARM Cortex-M3的32位处理器芯片,片内具有256KB FLASH,48KB RAM ( 片上集成12B ...

  3. STM32 ~ 外扩SRAM

    字节控制功能.支持高/低字节控制. 看看实现 IS62WV51216 的访问,需要对 FSMC进行哪些配置. 这里就做一个概括性的讲解.步骤如下: 1)使能 FSMC 时钟,并配置 FSMC 相关的  ...

  4. STM32F407 外扩SRAM

    字节控制功能.支持高/低字节控制. 看看实现 IS62WV51216 的访问,需要对 FSMC进行哪些配置. 这里就做一个概括性的讲解.步骤如下: 1)使能 FSMC 时钟,并配置 FSMC 相关的  ...

  5. STM32标准外设库中USE_STDPERIPH_DRIVER, STM32F10X_MD的含义

    在项目中使用stm32标准外设库(STM32F10x Standard Peripherals Library)的时候,我们会在项目的选项中预定义两个宏定义:USE_STDPERIPH_DRIVER, ...

  6. STM32 FSMC学习笔记+补充(LCD的FSMC配置)

    STM32 FSMC学习笔记+补充(LCD的FSMC配置) STM32 FSMC学习笔记 STM32 FSMC的用法--LCD

  7. STM32片外SRAM作运行内存

    本例演示用的软硬件: 片内外设驱动库:STM32CubeF41.24.1的HAL库1.7.6,2019年4月12日 IDE:MDK-ARM 5.28.0.0,2019年5月 开发板:片外SRAM挂在F ...

  8. 【转】STM32 FSMC总线深入研究

    原文:http://group.chinaaet.com/116/48112 由于CPU与FPGA通信的需要,以及对8080总线的熟悉,首选采用了STM32的FSMC总线,作为片间通信接口.FSMC能 ...

  9. stm32 fsmc 功能讲解(转)

    LCD有如下控制线:CS:Chip Select 片选,低电平有效RS:Register Select 寄存器选择WR:Write 写信号,低电平有效RD:Read 读信号,低电平有效RESET:重启 ...

随机推荐

  1. ORA-02287: sequence number not allowed here问题的解决

    当插入值需要从另外一张表中检索得到的时候,如下语法的sql语句已经不能完成该功能:insert into my_table(id, name) values ((select seq_my_table ...

  2. 123457123456#2#----com.MCgame.ShuXueKoSuan98--前拼后广--儿童小学数学口算Game-mc22222

    com.MCgame.ShuXueKoSuan98--前拼后广--儿童小学数学口算Game-mc

  3. Element 'repository' cannot have character [children], because the type's content type is element-only.

    出错现象 由于代码是网络上拷贝来的,可能存在特殊字符,在进行maven打包的时候报错 [ERROR] Malformed POM F:\ai开放平台\SRC\web知识产权申请\pom.xml: ex ...

  4. Nginx 504响应超时

    1.问题分析 nginx访问出现504 Gateway Time-out,一般是由于程序执行时间过长导致响应超时,例如程序需要执行90秒,而nginx最大响应等待时间为30秒,这样就会出现超时.    ...

  5. 转Python 爬虫入门实战

    转自:https://www.cnblogs.com/babycomeon/p/11651888.html

  6. 【grpc proto】python使用proto文件生成简易的服务端和客户端

    1.安装python-grpc(注意,是grpcio包,不是grpc包!) pip install grpcio 2.编写.proto文件 grpc教程:http://doc.oschina.net/ ...

  7. 组件文档系统-mdx-react-docz

    推荐指数:

  8. UCOS III的时间片轮转调度的一个问题

    1. 如果当前一个任务A在时间片未到来之前,主动放弃剩下的时间片,进入下一个任务B,那么下一个任务的的执行时间是多久? 书上说,是重置时间片,也就是说任务B也运行一个完整的时间片.

  9. 在 FR 网络配置 OSPF

    一.环境准备 1. 软件:GNS3 2. 路由:c7200 二.实验操作 实验要求: 1.掌握配置帧中继的基本方法. 2.掌握在路由器中模拟帧中继交换机的方法. 3.掌握 NBMA 网络中 OSPF  ...

  10. (7)Spring Boot web开发 --- servlet容器

    文章目录 配置嵌入式 Servlet 容器 注册 三大组件 使用其他 servlet 容器 使用外置的 `Servlet` 容器 配置嵌入式 Servlet 容器 Spirng Boot 默认使用自带 ...