日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

F407 sram

發(fā)布時間:2024/3/12 编程问答 79 豆豆
生活随笔 收集整理的這篇文章主要介紹了 F407 sram 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

sram 介紹

1、SRAM控制原理

STM32控制器芯片內(nèi)部有一定大小的SRAM及FLASH作為內(nèi)存和程序存儲空間,但當(dāng)程序較大,內(nèi)存和程序空間不足時,就需要在STM32芯片的外部擴(kuò)展存儲器了。 STM32F407ZE系列芯片可以擴(kuò)展外部SRAM用作內(nèi)存。

給STM32芯片擴(kuò)展內(nèi)存與給PC擴(kuò)展內(nèi)存的原理是一樣的,只是PC上一般以內(nèi)存條的形式擴(kuò)展, 而且內(nèi)存條實質(zhì)是由多個內(nèi)存顆粒(即SDRAM芯片)組成的通用標(biāo)準(zhǔn)模塊,而STM32擴(kuò)展時,直接直接與SRAM芯片連接

內(nèi)存:8M bit static RAMs organized as 512K words by 16bits(1M)

有下圖 STM32F407 的程序存儲空間為1M ,開始地址為0x800_0000 size 0x10_0000,內(nèi)存


2、功能板塊圖

?引腳說明

功能表

?SRAM存儲矩陣

????????SRAM內(nèi)部包含的存儲陣列,可以把它理解成一張表格,數(shù)據(jù)就填在這張表
格上。和表格查找一樣,指定一個行地址和列地址,就可以精確地找到目標(biāo)單元格,
這是SRAM芯片尋址的基本原理。這樣的每個單元格被稱為存儲單元,而這樣的表則
被稱為存儲矩陣

地址譯碼器把N根地址線轉(zhuǎn)換成2N根信號線,每根信號線對應(yīng)一行或一列存儲單元,通過地址線找到具體的存儲單元,實現(xiàn)尋址。

本實例中的SRAM比較小,沒有列地址線,它的數(shù)據(jù)寬度為16位,即一個行地址對應(yīng)2字節(jié)空間,框圖中左側(cè)的A0-A18是行址信號, 18根地址線一共可以表示218=28x1024=512K行存儲單元,所以它一共能訪問512Kx16bits大小的空間。訪問時,使用UB#或LB#線控制數(shù)據(jù)寬度,

SRAM的讀寫流程

讀時訊


?寫時訊

讀寫 時訊?

sram 讀寫流程

?讀寫時序的流程很類似,過程如下:
(1) 主機(jī)使用地址信號線發(fā)出要訪問的存儲器目標(biāo)地址;
(2) 控制片選信號CS1#及CS2#使能存儲器芯片;
(3) 若是要進(jìn)行讀操作,則控制讀使能信號OE#表示要讀數(shù)據(jù),若進(jìn)行寫操作則控制寫使能信號WE#表示要寫數(shù)據(jù);
(4) 使用掩碼信號LB#與UB#指示要訪問目標(biāo)地址的高、低字節(jié)部分;
(5) 若是讀取過程,存儲器會通過數(shù)據(jù)線向主機(jī)輸出目標(biāo)數(shù)據(jù),若是寫入過程,主要使用數(shù)據(jù)線向存儲器傳輸目標(biāo)數(shù)據(jù)

?FSMC簡介

????????TM32F4系列芯片使用FSMC外設(shè)來管理擴(kuò)展的存儲器, FSMC是Flexible Static Memory Controller的縮寫,譯為靈活的靜態(tài)存儲控制器。它可以用于驅(qū)動包括SRAM、 NOR FLASH以及NAND FLSAH類型的存儲器,不能驅(qū)動如SDRAM這種動態(tài)的存儲器而在STM32F429系列的控制器中,它具有FMC外設(shè),支持控制SDRAM存儲器

1、FSMC框圖剖析

2、 通訊引腳

由于控制不同類型存儲器的時候會有一些不同的引腳,看起來有非常多,其中地址線FSMC_A和數(shù)據(jù)線FSMC_D是所有控制器都共用的

其中比較特殊的FSMC_NE是用于控制SRAM芯片的控制信號線,STM32具有FSMC_NE1/2/3/4號引腳,不同的引腳對應(yīng)STM32內(nèi)部不同的地址
區(qū)域。
例如,當(dāng)STM32訪問0x68000000-0x6BFFFFFF地址空間時,FSMC_NE3引腳會自動設(shè)置為低電平,由于它連接到SRAM的CE#引腳,所以SRAM的片選被使能,而訪問0x60000000-0x63FFFFFF地址時, FSMC_NE1會輸出低電平。當(dāng)使用不同的FSMC_NE引腳連接外部存儲器時, STM32訪問SRAM的地址不一樣,從而達(dá)到控制多塊SRAM芯片的目的。


3、 存儲器控制器

上面不同類型的引腳是連接到FSMC內(nèi)部對應(yīng)的存儲控制器中的。NOR/PSRAM/SRAM設(shè)備使用相同的控制器, NAND/PC卡設(shè)備使用相同的控制器,不同的控制器有專用的寄存器用于配置其工作模式。控制SRAM的有FSMC_BCR1/2/3/4控制寄存器、FSMC_BTR1/2/3/4片選時序寄存器以及FSMC_BWTR1/2/3/4寫時序寄存器。每種寄存器都有4個,分別對應(yīng)于4個不同的存儲區(qū)域(比如板塊1 有4個區(qū)域 (4*64MB)),各種寄存器介紹如下:
????????? FSMC_BCR控制寄存器可配置要控制的存儲器類型、數(shù)據(jù)線寬度以及信號
有效極性能參數(shù)。
????????? FMC_BTR時序寄存器用于配置SRAM訪問時的各種時間延遲,如數(shù)據(jù)保
持時間、地址保持時間等。
????????? FMC_BWTR寫時序寄存器與FMC_BTR寄存器控制的參數(shù)類似,它專門用
于控制寫時序的時間參數(shù)。

4、時鐘控制邏輯
?

FSMC外設(shè)掛載在AHB總線上,時鐘信號來自于HCLK(默認(rèn)168MHz)(sram異步時鐘沒有分頻,分頻無效),控制器的同步時鐘輸出就是由它分頻得到。例如, NOR控制器的FSMC_CLK引腳輸出的時鐘,它可用于與同步類型的SRAM芯片進(jìn)行同步通訊,它的時鐘頻率可通過FSMC_BTR寄存器的CLKDIV位配置,可以配置為HCLK的1/2或1/3,也就是說,若它與同步類型的SRAM通訊時,同步時鐘最高頻率為84MHz。本示例中的SRAM為異步類型的存儲器,不使用同步時鐘信號,所以時鐘分頻配置不起作用。‘

5、FSMC的地址映射
?

????????FSMC連接好外部的存儲器并初始化后,就可以直接通過訪問地址來讀寫數(shù)據(jù)。FSMC訪問存儲器的方式與I2C EEPROM、 SPI FLASH的不一樣,后兩種方式都需要控制I2C或SPI總線給存儲器發(fā)送地址,然后獲取數(shù)據(jù);在程序里,這個地址和數(shù)據(jù)都需要分開使用不同的變量存儲,并且訪問時還需要使用代碼控制發(fā)送讀寫命令。而使用FSMC外接存儲器時,其存儲單元是映射到STM32的內(nèi)部尋址空間的;在程序里,定義一個指向這些地址的指針,然后就可以通過指針直接修改該存儲單元的內(nèi)容, FSMC外設(shè)會自動完成數(shù)據(jù)訪問過程,讀寫命令之類的操作不需要程序控制

FSMC的地址映射

?

圖中左側(cè)的是Cortex-M4內(nèi)核的存儲空間分配,右側(cè)是STM32FSMC外設(shè)的地址映射。可以看到FSMC的NOR/PSRAM/SRAM/NANDFLASH以及PC卡的地址都在External RAM地址空間內(nèi)。正是因為存在這樣的地址映射,使得訪問FSMC控制的存儲器時,就跟訪問STM32的片上外設(shè)寄存器一樣(片上外設(shè)的地址映射即圖中左側(cè)的“Peripheral”區(qū)域)。FSMC把整個External RAM存儲區(qū)域分成了4個Bank區(qū)域,并分配了地址范圍及適用的存儲器類型,如NOR及SRAM存儲器只能使用Bank1的地址。
在NOR及SRAM區(qū)域, 每個Bank的內(nèi)部又分成了4個小塊,每個小塊有相應(yīng)的控制引腳用于連接片選信號,如FSMC_NE[4:1]信號線可用于選擇BANK1內(nèi)部的4小塊地址區(qū)域,當(dāng)STM32訪問0x68000000-0x6BFFFFFF地址空間時,會訪問到Bank1的第3小塊區(qū)域,相應(yīng)的FSMC_NE3信號線會輸出控制信號

?FSMC控制SRAM的時序

FSMC外設(shè)支持輸出多種不同的時序以便于控制不同的存儲器,它具有ABCD四種模式,下面我們僅針對控制SRAM使用的模式A進(jìn)行講解

?當(dāng)內(nèi)核發(fā)出訪問某個指向外部存儲器地址時, FSMC外設(shè)會根據(jù)配置控制信號線產(chǎn)生時序訪問存儲器,上圖中的是訪問外部SRAM時FSMC外設(shè)的讀寫時序。
以讀時序為例,該圖表示一個存儲器操作周期由地址建立周期
(ADDSET)、數(shù)據(jù)建立周期(DATAST)。在地址建立周
期中,地址線發(fā)出要訪問的地址,數(shù)據(jù)掩碼信號線指示出要讀取地址的高、
低字節(jié)部分,片選信號使能存儲器芯片;地址建立周期結(jié)束后讀使能信號線
發(fā)出讀使能信號,接著存儲器通過數(shù)據(jù)信號線把目標(biāo)數(shù)據(jù)傳輸給FSMC,
FSMC把它交給內(nèi)核。
寫時序類似,區(qū)別是它的一個存儲器操作周期僅由地址建立周期
(ADDSET)和數(shù)據(jù)建立周期(DATAST)+1組成,且在數(shù)據(jù)建立周期期間寫使能信
號線發(fā)出寫信號,接著FSMC把數(shù)據(jù)通過數(shù)據(jù)線傳輸?shù)酱鎯ζ髦?/p>

寫程序步驟
?===============================================================================
? ? ? ? ? ? ? ? ? ? ##### NOR and SRAM Controller functions #####
?=============================================================================== ?

?[..] The following sequence should be followed to configure the FSMC to interface
? ? ? with SRAM, PSRAM, NOR or OneNAND memory connected to the NOR/SRAM Bank:
?
? ?(#) Enable the clock for the FSMC and associated GPIOs using the following functions:
? ? ? ? ? RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC, ENABLE);
? ? ? ? ? RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOx, ENABLE);

? ?(#) FSMC pins configuration?
? ? ? ?(++) Connect the involved FSMC pins to AF12 using the following function?
? ? ? ? ? ? GPIO_PinAFConfig(GPIOx, GPIO_PinSourcex, GPIO_AF_FSMC);?
? ? ? ?(++) Configure these FSMC pins in alternate function mode by calling the function
? ? ? ? ? ? GPIO_Init(); ? ?
? ?(#) Declare a FSMC_NORSRAMInitTypeDef structure, for example:
? ? ? ? ? FSMC_NORSRAMInitTypeDef ?FSMC_NORSRAMInitStructure;
? ? ? and fill the FSMC_NORSRAMInitStructure variable with the allowed values of
? ? ? the structure member.
? ? ??
? ?(#) Initialize the NOR/SRAM Controller by calling the function
? ? ? ? ? FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);?

? ?(#) Then enable the NOR/SRAM Bank, for example:
? ? ? ? ? FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM2, ENABLE); ?

? ?(#) At this stage you can read/write from/to the memory connected to the NOR/SRAM Bank.?

(1)(使能時鐘)

(2)初始化GPIO引腳和復(fù)用配置

(3)初始化寄存器通過結(jié)構(gòu)定義FSMC_NORSRAMInitTypeDef? 用函數(shù)FSMC_NORSRAMInitTypeDef

(4)使能SRAm:FSMC_NORSRAMCmd

代碼塊

/*初始化SRAM相關(guān)的GPIO*/
?? ?SRAM_GPIO_Config();

GPIO_InitTypeDef GPIO_InitStructure;/* 使能SRAM相關(guān)的GPIO時鐘 *//*地址信號線*/RCC_AHB1PeriphClockCmd(FSMC_A0_GPIO_CLK | FSMC_A1_GPIO_CLK | FSMC_A2_GPIO_CLK | FSMC_A3_GPIO_CLK | FSMC_A4_GPIO_CLK | FSMC_A5_GPIO_CLK |FSMC_A6_GPIO_CLK | FSMC_A7_GPIO_CLK | FSMC_A8_GPIO_CLK |FSMC_A9_GPIO_CLK | FSMC_A10_GPIO_CLK| FSMC_A11_GPIO_CLK| FSMC_A12_GPIO_CLK| FSMC_A13_GPIO_CLK|FSMC_A14_GPIO_CLK|FSMC_A15_GPIO_CLK|FSMC_A16_GPIO_CLK|FSMC_A17_GPIO_CLK|FSMC_A18_GPIO_CLK|/*數(shù)據(jù)信號線*/FSMC_D0_GPIO_CLK | FSMC_D1_GPIO_CLK | FSMC_D2_GPIO_CLK | FSMC_D3_GPIO_CLK | FSMC_D4_GPIO_CLK | FSMC_D5_GPIO_CLK |FSMC_D6_GPIO_CLK | FSMC_D7_GPIO_CLK | FSMC_D8_GPIO_CLK |FSMC_D9_GPIO_CLK | FSMC_D10_GPIO_CLK| FSMC_D11_GPIO_CLK|FSMC_D12_GPIO_CLK| FSMC_D13_GPIO_CLK| FSMC_D14_GPIO_CLK|FSMC_D15_GPIO_CLK| /*控制信號線*/FSMC_CS_GPIO_CLK | FSMC_WE_GPIO_CLK | FSMC_OE_GPIO_CLK |FSMC_UDQM_GPIO_CLK|FSMC_LDQM_GPIO_CLK, ENABLE);/*-- GPIO 配置 -----------------------------------------------------*//* 通用 GPIO 配置 */GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;/*A地址信號線 針對引腳配置*/GPIO_InitStructure.GPIO_Pin = FSMC_A0_GPIO_PIN; GPIO_Init(FSMC_A0_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_A0_GPIO_PORT,FSMC_A0_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_A1_GPIO_PIN; GPIO_Init(FSMC_A1_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_A1_GPIO_PORT,FSMC_A1_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_A2_GPIO_PIN; GPIO_Init(FSMC_A2_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_A2_GPIO_PORT,FSMC_A2_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_A3_GPIO_PIN; GPIO_Init(FSMC_A3_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_A3_GPIO_PORT,FSMC_A3_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_A4_GPIO_PIN; GPIO_Init(FSMC_A4_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_A4_GPIO_PORT,FSMC_A4_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_A5_GPIO_PIN; GPIO_Init(FSMC_A5_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_A5_GPIO_PORT,FSMC_A5_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_A6_GPIO_PIN; GPIO_Init(FSMC_A6_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_A6_GPIO_PORT,FSMC_A6_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_A7_GPIO_PIN; GPIO_Init(FSMC_A7_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_A7_GPIO_PORT,FSMC_A7_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_A8_GPIO_PIN; GPIO_Init(FSMC_A8_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_A8_GPIO_PORT,FSMC_A8_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_A9_GPIO_PIN; GPIO_Init(FSMC_A9_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_A9_GPIO_PORT,FSMC_A9_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_A10_GPIO_PIN; GPIO_Init(FSMC_A10_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_A10_GPIO_PORT,FSMC_A10_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_A11_GPIO_PIN; GPIO_Init(FSMC_A11_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_A11_GPIO_PORT,FSMC_A11_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_A12_GPIO_PIN; GPIO_Init(FSMC_A12_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_A12_GPIO_PORT,FSMC_A12_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_A13_GPIO_PIN; GPIO_Init(FSMC_A13_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_A13_GPIO_PORT,FSMC_A13_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_A14_GPIO_PIN; GPIO_Init(FSMC_A14_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_A14_GPIO_PORT,FSMC_A14_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_A15_GPIO_PIN; GPIO_Init(FSMC_A15_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_A15_GPIO_PORT,FSMC_A15_GPIO_PinSource,FSMC_GPIO_AF); GPIO_InitStructure.GPIO_Pin = FSMC_A16_GPIO_PIN; GPIO_Init(FSMC_A16_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_A16_GPIO_PORT,FSMC_A16_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_A17_GPIO_PIN; GPIO_Init(FSMC_A17_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_A17_GPIO_PORT,FSMC_A17_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_A18_GPIO_PIN; GPIO_Init(FSMC_A18_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_A18_GPIO_PORT,FSMC_A18_GPIO_PinSource,FSMC_GPIO_AF);/*DQ數(shù)據(jù)信號線 針對引腳配置*/GPIO_InitStructure.GPIO_Pin = FSMC_D0_GPIO_PIN; GPIO_Init(FSMC_D0_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_D0_GPIO_PORT,FSMC_D0_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_D1_GPIO_PIN; GPIO_Init(FSMC_D1_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_D1_GPIO_PORT,FSMC_D1_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_D2_GPIO_PIN; GPIO_Init(FSMC_D2_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_D2_GPIO_PORT,FSMC_D2_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_D3_GPIO_PIN; GPIO_Init(FSMC_D3_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_D3_GPIO_PORT,FSMC_D3_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_D4_GPIO_PIN; GPIO_Init(FSMC_D4_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_D4_GPIO_PORT,FSMC_D4_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_D5_GPIO_PIN; GPIO_Init(FSMC_D5_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_D5_GPIO_PORT,FSMC_D5_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_D6_GPIO_PIN; GPIO_Init(FSMC_D6_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_D6_GPIO_PORT,FSMC_D6_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_D7_GPIO_PIN; GPIO_Init(FSMC_D7_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_D7_GPIO_PORT,FSMC_D7_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_D8_GPIO_PIN; GPIO_Init(FSMC_D8_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_D8_GPIO_PORT,FSMC_D8_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_D9_GPIO_PIN; GPIO_Init(FSMC_D9_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_D9_GPIO_PORT,FSMC_D9_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_D10_GPIO_PIN; GPIO_Init(FSMC_D10_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_D10_GPIO_PORT,FSMC_D10_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_D11_GPIO_PIN; GPIO_Init(FSMC_D11_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_D11_GPIO_PORT,FSMC_D11_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_D12_GPIO_PIN; GPIO_Init(FSMC_D12_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_D12_GPIO_PORT,FSMC_D12_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_D13_GPIO_PIN; GPIO_Init(FSMC_D13_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_D13_GPIO_PORT,FSMC_D13_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_D14_GPIO_PIN; GPIO_Init(FSMC_D14_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_D14_GPIO_PORT,FSMC_D14_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_D15_GPIO_PIN; GPIO_Init(FSMC_D15_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_D15_GPIO_PORT,FSMC_D15_GPIO_PinSource,FSMC_GPIO_AF);/*控制信號線*/GPIO_InitStructure.GPIO_Pin = FSMC_CS_GPIO_PIN; GPIO_Init(FSMC_CS_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_CS_GPIO_PORT,FSMC_CS_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_WE_GPIO_PIN; GPIO_Init(FSMC_WE_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_WE_GPIO_PORT,FSMC_WE_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_OE_GPIO_PIN; GPIO_Init(FSMC_OE_GPIO_PORT, &GPIO_InitStructure); GPIO_PinAFConfig(FSMC_OE_GPIO_PORT,FSMC_OE_GPIO_PinSource,FSMC_GPIO_AF); GPIO_InitStructure.GPIO_Pin = FSMC_UDQM_GPIO_PIN; GPIO_Init(FSMC_UDQM_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_UDQM_GPIO_PORT,FSMC_UDQM_GPIO_PinSource,FSMC_GPIO_AF);GPIO_InitStructure.GPIO_Pin = FSMC_LDQM_GPIO_PIN; GPIO_Init(FSMC_LDQM_GPIO_PORT, &GPIO_InitStructure);GPIO_PinAFConfig(FSMC_LDQM_GPIO_PORT,FSMC_LDQM_GPIO_PinSource,FSMC_GPIO_AF); }

測試

通過向訪問地址進(jìn)行測試(8‘16、32位’)

e.g

?*( uint8_t*) (Bank1_SRAM4_ADDR ) = (uint8_t)0xAA;
?? ? printf("\r\n指針訪問SRAM,寫入數(shù)據(jù)0xAA \r\n");

?? ? /*從SRAM讀取數(shù)據(jù)*/
?? ? temp = ?*( uint8_t*) (Bank1_SRAM4_ADDR );
?? ? printf("讀取數(shù)據(jù):0x%X \r\n",temp);

總結(jié)

以上是生活随笔為你收集整理的F407 sram的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。