前幾天看到開源電子論壇(openedv.com)有人在問這個(gè)問題,我特意去做了這個(gè)實(shí)驗(yàn),這樣用外部SRAM就跟用內(nèi)部SRAM一樣,不用自己去申請內(nèi)存,也不用考慮什么內(nèi)存地址,一切讓編譯器自己去解決。廢話不多說,我直接拿原子哥的戰(zhàn)艦開發(fā)板庫函數(shù)版的外部SRAM實(shí)驗(yàn)來修改。在庫函數(shù)的system_stm32f10x.c這個(gè)初始化文件當(dāng)中其實(shí)就已經(jīng)有外部SRAM的初始化,我們只要增加“#define DATA_IN_ExtSRAM 1”這句宏定義
本文引用地址:http://2s4d.com/article/201611/322732.htm
1 | #if defined (STM32F10X_HD) || (defined STM32F10X_XL) || (defined STM32F10X_HD_VL) |
3 | #define DATA_IN_ExtSRAM 1 |
再編譯的時(shí)候就會把外部SRAM的初始化編譯進(jìn)去,初始化的代碼大家可以去看文件中的void SystemInit_ExtMemCtl(void) 這個(gè)函數(shù)。然后我們在工程設(shè)置那里把外部SRAM地址增加進(jìn)去,如下圖
修改啟動文件中的中的第39行,把__initial_sp 修改成__initial_spEQU 0x20000000 + Stack_Size
然后我們把Main中的testsram中的地址去掉,讓編譯器自己去指定地址
再把原子哥的外部SRAM的初始化注釋掉,因?yàn)榍懊嬉呀?jīng)在System_init已經(jīng)初始化了。其實(shí)這里我們可以把原子的SRAM.c文件去掉不用它了,我這里沒去掉,其實(shí)只是為了能正常調(diào)用fsmc_sram_test()來測試實(shí)驗(yàn)結(jié)果
到這里我們可以編譯了,下載到開發(fā)板,我們就可以看到實(shí)驗(yàn)結(jié)果
評論