在使用STM32的FSMC的一些体会。。
来源:互联网 发布:两台mac屏幕共享 编辑:程序博客网 时间:2024/06/13 09:23
刚开始接触感觉似乎很难,真的是云里雾里。但是看了百度百科FMSC介绍以及芯嵌stm32入门视频《基于stm32的FSMC控制LCD的理解》视频终于对FMSC有自己的理解。虽然还有些细节还没有完全吃透,但是学东西就是需要在摸索中前进,停下来就是浪费时间。然后马上拿起板子,下载SRAM的例程运行。好正常运行。下面我们来看看相关的代码吧。
/*神舟SRAM读写程序相关定义*/#define BUFFER_SIZE 0x400 /*定义读写BUFFER大小*/#define WRITE_READ_ADDR 0x8000 /*定义SRAM读写的地址*/ErrorStatus HSEStartUpStatus;u16 TxBuffer[BUFFER_SIZE];u16 RxBuffer[BUFFER_SIZE];u32 WriteReadStatus = 0, Index = 0;u8 count=0;u16 i = 0;int main(void){ Printf_Init(); /*配置与SRAM连接的FSMC BANK1 NOR/SRAM3*/ SRAM_Init();//SRAM初始化 /*将写SRAM的数据BUFFER填充为从0x1234开始的连续递增的一串数据 */ Fill_Buffer(TxBuffer, BUFFER_SIZE, 0x1234); /*将数据写入到SRAM中。WRITE_READ_ADDR:写入的起始地址*/ SRAM_WriteBuffer(TxBuffer, WRITE_READ_ADDR, BUFFER_SIZE); /*从SRAM中读回刚写入的数据。WRITE_READ_ADDR:读出数据的起始地址*/ SRAM_ReadBuffer(RxBuffer, WRITE_READ_ADDR, BUFFER_SIZE); /*判断读回的数据与写入的数据是否一致*/ for (Index = 0x00; ((Index < BUFFER_SIZE) && (WriteReadStatus == 0)); Index++) { if (RxBuffer[Index] != TxBuffer[Index]) { WriteReadStatus = Index + 1; } } printf("\n\r SRAM读写访问程序运行结果: "); if (WriteReadStatus == 0) { printf("\n\r SRAM读写访问成功\n\r"); } else { printf("\n\r SRAM读写访问失败\n\r"); } while (1) { } }
void SRAM_Init(void)初始化函数的相关配置参数的解释大家可以移步到stm32 FSMC的函数解释,里面写得非常清楚相关配置参数分别对应什么意思。
这里有几个参数需要注意下:
1.#define Bank1_SRAM3_ADDR ((uint32_t)0x68000000) //这个是对应我们选择的bank1的子bank3的地址开始。说明一下bankX分别对应的地址是:
第一块:6000 0000h--63ff ffffh
第二块:6400 0000h--67ff ffffh
第二块:6800 0000h--6bff ffffh
第三块:6c00 0000h--6fff ffffh,而我们初始化FSMC的时候,FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM3;所以定义了这个地址#define Bank1_SRAM3_ADDR ((uint32_t)0x68000000) ,是bank1的子bank3的起始地址。
2.#define BUFFER_SIZE 0x400 /*定义读写BUFFER大小*/
这个是我们自己定义存储空间的大小,这个可以根据自己所存储的数据量适当改变。
3.#define WRITE_READ_ADDR 0x8000 /*定义SRAM读写的地址*/
这个是我们基于读写0x68000000这个地址的偏移地址,数据就是从0x68000000+ 0x8000 这个地址开始存储。这个也可以修改,就要看自己划分的数据空间来定了。
- 在使用STM32的FSMC的一些体会。。
- STM32 FSMC的使用小细节。
- STM32之FSMC的液晶使用
- STM32的FSMC
- stm32 FSMC的函数解释
- STM32 FSMC的用法--LCD
- (十)stm32中FSMC的使用(用于LCD)
- STM32 FSMC学习笔记+补充(LCD的FSMC配置)
- STM32 FSMC学习笔记+补充(LCD的FSMC配置)
- STM32的FSMC驱动TFT笔记
- 【转】STM32 FSMC的用法--LCD
- STM32接口FSMC/FMC难点的理解
- 使用Vega的一些体会
- resin3使用的一些体会
- fsmc接口的使用注意
- 在Python中使用正则表达式的一些体会
- STM32 FSMC 外部使用SRAM
- 对于STM32使用FSMC驱动传统8080并口器件方式(TFT)的理解(上)
- hadoop--1
- NOJ1589——[1589] 老蔡和TT
- 从一个简单的宏定义看linux内核的严谨
- yarn架构 及 client提交任务过程讲解
- poj1351Number of Locks(记忆化搜索)
- 在使用STM32的FSMC的一些体会。。
- 百度2014 Summer Party视频集锦
- Linux驱动调试时的一些技巧
- win7-32位+AMD+VMware安装MAC OS X 10.6.3
- 三篇基础sql之1
- C编写的简单病毒程序
- 内存管理机制(详细介绍)
- 防追踪创安全网络环境 EFF推Beta版“Privacy Badger”扩展
- Linux详解udev