前言
今天總結“STM32F103 外部SRAM作為運行內存”。對于運行內存應該都知道它的意思,主要是程序運行時(shí)所使用的RAM,比如我們定義的全局變量、局部變量這些在程序運行時(shí)都會(huì )在RAM中為它們開(kāi)辟一片空間,用于運行時(shí)所使用。
今天提供的工程是基于前面“TIM延時(shí)”的工程修改而來(lái),但是今天的例子是使用ST官方提供的標準庫里面“system_stm32f10x.c”文件里面現成的函數接口(使用寄存器配置),使其控制外部SRAM作為運行內存。昨天的工程使用標準庫fsmc相應的函數接口來(lái)配置的FSMC,昨天工程的目的就是為了使其大家熟悉參數信息。因此,今天單獨再提供一個(gè)工程”FSMC讀寫(xiě)外部SRAM_官方配置”(就是用寄存器配置的版本),請自行下載查看和測試,效果和昨天一樣只是配置FSMC的方式不同。
如何知道運行內存是使用的內部RAM還是外部RAM呢?測試方法很簡(jiǎn)單,就是定義一些全局變量或者局部變量,讀出其地址就知道了。因此今天提供的例程就是使用這種方法來(lái)測試的。
每天總結的不僅僅是基礎,而是重點(diǎn),不起眼的重點(diǎn),容易被人忽視的重點(diǎn)。關(guān)注微信公眾號“EmbeddDeveloper”還有更多精彩等著(zhù)你。
本著(zhù)免費分享的原則,將總結的工程源代碼分享給大家,還望看到的朋友關(guān)注一下微信公眾號,并將文章分享給你的朋友。
今天提供下載的“軟件工程”都是在硬件板子上進(jìn)行多次測試、并保證沒(méi)問(wèn)題才上傳至360云盤(pán),官方配置工程是和昨天做對比(FSMC配置方式不一樣)。
今天的軟件工程下載地址(360云盤(pán)):
FSMC讀寫(xiě)外部SRAM_官方配置:
https://yunpan.cn/cSq3WajiZIcx8 訪(fǎng)問(wèn)密碼 30c0
外部SRAM作為運行內存:
https://yunpan.cn/cSq3n5iBTHuDc 訪(fǎng)問(wèn)密碼 4102
STM32F10x的資料可以在我360云盤(pán)下載:
https://yunpan.cn/crBUdUGdYKam2 訪(fǎng)問(wèn)密碼 ca90
內容講解
工程概要說(shuō)明: 例程定義了一個(gè)全局BUF和一個(gè)局部BUF,通過(guò)對倆BUF賦值,再打印數值和對應其地址,這樣就可以檢測運行內存的地址。
提供的工程以簡(jiǎn)單為原則,詳細中文注釋?zhuān)奖阕约悍奖愦蠹摇?/p>
關(guān)于“STM32F103 外部SRAM作為運行內存” 我把重要的幾點(diǎn)在下面分別講述:
一、配置啟動(dòng)文件
我們使用官方標準庫,拷貝標準庫FSMC例程里面的“startup_stm32f10x_hd.s”文件(工程使用103ZE,若使用互聯(lián)型芯片拷貝對應文件),替換掉我們之前工程的啟動(dòng)文件,如下圖:
二、配置FSMC
我們使用官方標準庫里面“system_stm32f10x.c”文件里面現成的函數接口(使用寄存器配置)來(lái)配置FSMC,只需要打開(kāi)“system_stm32f10x.c”文件里面第122行的宏“DATA_IN_ExtSRAM”,見(jiàn)下圖:
三、分配RAM
RAM地址的分配是由編譯器完成的,因此需要對工程進(jìn)行相應配置,就是使用外部RAM,見(jiàn)下圖:
該函數位于main.c文件下面;
這個(gè)函數主要就是對上面配置及整改工程的測試。定義一個(gè)全局變量和一個(gè)局部變量,通過(guò)串口打印出他們的地址就可以判斷運行內存是使用外部還是內部。
五、打印(測試)結果
看了測試函數就知道依次打印出來(lái)的數據是什么,這里我們很明顯的可以看到打印出的地址是0x6800xxxx,這里的0x6800xxxx地址數據就是外部SRAM地址(不懂的話(huà),請看昨天的講解),說(shuō)明運行內存確實(shí)是外部SRAM.
五、今天的重點(diǎn)
A.實(shí)際開(kāi)發(fā)中請盡量使用官方標準庫里面“system_stm32f10x.c”文件里面現成的函數接口(使用寄存器配置)來(lái)配置FSMC,這樣效率高一下?;蛘?,如果你喜歡STM32CubeMX配置的代碼風(fēng)格也可以使用哪一種,關(guān)于STM32CubeMX的使用方法其實(shí)很簡(jiǎn)單,網(wǎng)上也有一些使用教程,或者后期我會(huì )增加一片關(guān)于STM32CubeMX的文章。
說(shuō)明
今天提供的軟件工程基于STM32F103大容量芯片,中等及小容量芯片沒(méi)有FSMC功能,自然也不能使用。其實(shí)只要適當修改工程的部分配置,STM32F1有FSCM功能的芯片都適用。
最后
如果覺(jué)得內容適合你(如:內容易讀易懂等),你又想了解更多相關(guān)內容,請關(guān)注公眾號,新內容持續更新中,后期將會(huì )有更多優(yōu)秀內容出現。
贊是一種鼓勵、分享是最好的支持!

