推薦
分享一個大神的人工智能教程。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到人工智能的隊伍中來!http://www.captainbed.net/strongerhuang
前言
今天總結“STM32F103 外部NorFlash存儲程式代碼”。今天提供的執行個體工程是存儲程式代碼到外部NorFlash,并執行外部NorFlash的代碼(既然存儲了程式代碼,那麼肯定也會運作NorFlash的程式)。對于儲存在外部NorFlash的程式可以通過多種途徑,今天主要使用MDK-ARM工具下載下傳程式到外部NorFlash,但是需要“程式設計算法”,但這些算法官方都已經寫好了的,我們隻需要配置一下,直接使用就是了。
NOR FLASH是很常見的一種存儲晶片,掉電不會丢失資料。 NOR FLASH支援Execute On Chip,即程式可以直接在FLASH片内執行。這點和NAND FLASH不一樣。是以,在嵌入式系統中,NOR FLASH很适合作為程式的存儲媒體。 NOR FLASH的讀取和RAM很類似,但不可以直接進行寫操作。對NOR FLASH的寫操作需要遵循特定的指令序列,最終由晶片内部的控制單元完成寫操作。
本着免費分享的原則,将總結的工程源代碼分享給大家,還望看到的朋友關注一下微信公衆号,并将文章分享給你的朋友。
下載下傳
今天提供下載下傳的“軟體工程”都是在硬體闆子上進行多次測試、并保證沒問題才上傳至360雲盤。
今天的軟體工程下載下傳位址(360雲盤):
https://yunpan.cn/cSSbuXYC82jNu 通路密碼 8967
STM32F10x的資料可以在我360雲盤下載下傳:
https://yunpan.cn/crBUdUGdYKam2 通路密碼 ca90
内容講解
工程概要說明: 例程定義了兩個函數“Nor_Fun”存儲在外部NorFlash,即外部NorFlash程式,定義一個函數“Flash_Fun”儲存在内部FLASH,通過執行這三個函數,再列印它們函數接口對應的位址,這樣就可以檢測這三個函數儲存的位置了。
提供的工程以簡單為原則,詳細中文注釋,友善自己友善大家。
關于“STM32F103 外部NorFlash存儲程式代碼” 我把重要的幾點在下面分别講述:
一、擷取現成檔案
我們使用官方标準庫,拷貝标準庫FSMC例程裡面現成的算法。拷貝“程式設計算法”到keil安裝目錄x:\Keil_v5\ARM\Flash裡面,拷貝“FLASH_NOR.ini”到我們自己建立的工程裡面(随便一個位置,友善調用,我們工程是在“\Libraries\CMSIS\DeviceSupport\startup”下面)。

二、配置Nor位址
配置Nor位址,見下圖。
注意:圖中1,2不要勾上。
三、配置程式設計算法
拷貝了“程式設計算法”就可以看見算法檔案。
四、初始化NOR
路徑就是上面你拷貝的路勁。
五、配置需要儲存外部Nor的代碼
六、列印(測試)結果
通過測試函數和依次列印的資料可以看得出外部Nor的位址是0x6400xxxx,而内部Flash位址的0x0800xxxx。說明外部Nor函數确實儲存在外部NorFlash裡面。
七、今天的重點
A.有人覺得很奇怪,不是程式存儲在外部Nor嗎? 為什麼還是有程式存儲在内部Flash呢? 答案是:内部FLASH必須要有一部分程式來配置FSMC,這樣才能使用FSMC控制讀取外部Nor程式。
說明
今天提供的軟體工程基于STM32F103大容量晶片,中等及小容量晶片沒有FSMC功能,自然也不能使用。其實隻要适當修改工程的部配置設定置,STM32F1有FSCM功能的晶片都适用。由于這一塊的知識相對來說複雜一點,還有很多地方沒有講解到位,請根據提供的工程自行研究。
最後
我的網站:https://www.strongerhuang.com
我的微信公衆号(ID:strongerHuang)還在分享STM8、STM32、Keil、IAR、FreeRTOS、UCOS、RT-Thread、CANOpen、Modbus…等更多精彩内容,如果想檢視更多内容,可以關注我的微信公衆号。
微信公衆号