STM32F1_外部NorFlash存儲(chǔ)程序代碼
掃描二維碼
隨時(shí)隨地手機(jī)看文章
前言
今天總結(jié)“STM32F103 外部NorFlash存儲(chǔ)程序代碼”。今天提供的實(shí)例工程是存儲(chǔ)程序代碼到外部NorFlash,并執(zhí)行外部NorFlash的代碼(既然存儲(chǔ)了程序代碼,那么肯定也會(huì)運(yùn)行NorFlash的程序)。對(duì)于儲(chǔ)存在外部NorFlash的程序可以通過多種途徑,今天主要使用MDK-ARM工具下載程序到外部NorFlash,但是需要“編程算法”,但這些算法官方都已經(jīng)寫好了的,我們只需要配置一下,直接使用就是了。
NOR FLASH是很常見的一種存儲(chǔ)芯片,掉電不會(huì)丟失數(shù)據(jù)。 NOR FLASH支持Execute On Chip,即程序可以直接在FLASH片內(nèi)執(zhí)行。這點(diǎn)和NAND FLASH不一樣。因此,在嵌入式系統(tǒng)中,NOR FLASH很適合作為程序的存儲(chǔ)介質(zhì)。 NOR FLASH的讀取和RAM很類似,但不可以直接進(jìn)行寫操作。對(duì)NOR FLASH的寫操作需要遵循特定的命令序列,最終由芯片內(nèi)部的控制單元完成寫操作。
下載
今天提供下載的“軟件工程”都是在硬件板子上進(jìn)行多次測(cè)試、并保證沒問題才上傳至360云盤。
今天的軟件工程下載地址(360云盤):
https://yunpan.cn/cSSbuXYC82jNu訪問密碼 8967
STM32F10x的資料可以在我360云盤下載:
https://yunpan.cn/crBUdUGdYKam2訪問密碼 ca90
內(nèi)容講解
工程概要說明: 例程定義了兩個(gè)函數(shù)“Nor_Fun”存儲(chǔ)在外部NorFlash,即外部NorFlash程序,定義一個(gè)函數(shù)“Flash_Fun”儲(chǔ)存在內(nèi)部FLASH,通過執(zhí)行這三個(gè)函數(shù),再打印它們函數(shù)接口對(duì)應(yīng)的地址,這樣就可以檢測(cè)這三個(gè)函數(shù)儲(chǔ)存的位置了。
提供的工程以簡(jiǎn)單為原則,詳細(xì)中文注釋,方便自己方便大家。
關(guān)于“STM32F103 外部NorFlash存儲(chǔ)程序代碼”我把重要的幾點(diǎn)在下面分別講述:
一、獲取現(xiàn)成文件
我們使用官方標(biāo)準(zhǔn)庫(kù),拷貝標(biāo)準(zhǔn)庫(kù)FSMC例程里面現(xiàn)成的算法。拷貝“編程算法”到keil安裝目錄x:Keil_v5ARMFlash里面,拷貝“FLASH_NOR.ini”到我們自己創(chuàng)建的工程里面(隨便一個(gè)位置,方便調(diào)用,我們工程是在“LibrariesCMSISDeviceSupportstartup”下面)。
二、配置Nor地址
配置Nor地址,見下圖。
注意:圖中1,2不要勾上。
三、配置編程算法
拷貝了“編程算法”就可以看見算法文件。
四、初始化NOR
路徑就是上面你拷貝的路勁。
五、配置需要儲(chǔ)存外部Nor的代碼
六、打印(測(cè)試)結(jié)果
通過測(cè)試函數(shù)和依次打印的數(shù)據(jù)可以看得出外部Nor的地址是0x6400xxxx,而內(nèi)部Flash地址的0x0800xxxx。說明外部Nor函數(shù)確實(shí)儲(chǔ)存在外部NorFlash里面。
七、今天的重點(diǎn)
A.有人覺得很奇怪,不是程序存儲(chǔ)在外部Nor嗎? 為什么還是有程序存儲(chǔ)在內(nèi)部Flash呢? 答案是:內(nèi)部FLASH必須要有一部分程序來配置FSMC,這樣才能使用FSMC控制讀取外部Nor程序。
說明
今天提供的軟件工程基于STM32F103大容量芯片,中等及小容量芯片沒有FSMC功能,自然也不能使用。其實(shí)只要適當(dāng)修改工程的部分配置,STM32F1有FSCM功能的芯片都適用。由于這一塊的知識(shí)相對(duì)來說復(fù)雜一點(diǎn),還有很多地方?jīng)]有講解到位,請(qǐng)根據(jù)提供的工程自行研究。