如果某一個天項目經理提出一個需求,要求在現有STM32產品基礎上,內部FLASH增加64K字庫,你腦海中首先會想到什么?
1先說點其它
一般對于初學者來說,內部FLASH完全足夠,跑一個簡單的裸機Demo,或者一個RTOS加上兩個任務的Demo,對于現在的MCU完全沒有壓力。
但是,一旦你接觸到實際項目,你會發現很多地方都會開支FLASH,而且有些項目占用FLASH還不小。比如:某種特定算法,加載字庫,甚至放兩張圖片在FLASH里面。
再拿一個IAP應用編程的例子來說:一般對升級這個功能做的好一點的,會有一塊區域(備份區域)與應用程序差不多大小的FLASH區域。就是說:為了保證安全,你程序下載保存在一個備份區域,等下載成功再更新應用程序。 這樣做的目的:就是防止在下載的時候中途掉線,導致失敗。
找了一個圖,大致如下,將FLASH劃分為3個區域(引導程序FLASH區域、應用程序FLASH區域、備份程序FLASH區域),你們琢磨一下。
2STM32芯片選型
一般我們項目提出需求之后,都會選擇一款合適的MCU,首先想到的就是查看【選型手冊】,除了選擇外設資源之外,還有就是選擇適合的FLASH容量大小。STM32產品命令規則如下:
選型手冊地址:
https://www.stmcu.com.cn/upload/Selection_Guide.pdf
(微信公眾號不支持外鏈接,復制網址打開)
3驗證STM32內部FLASH究竟有多大
說了關于FLASH的一些話題,回來說說本文的重點:我們的STM32內部FLASH可能不止上面選型手冊說的那么大一點。
比如:我的MCU芯片具體型號為STM32F103RF,查看手冊可以知道其容量為768K,但實際它有1M的FLASH容量。
我這里大概說兩點簡單驗證的方法:
1.通過編程驗證
簡單來說就是通過擦除,寫入,讀取指定地址(就是超過FLASH大小的地址)。
FLASH_EraseSector
FLASH_ProgramWord
2.通過工具讀取FLASH數據
這個辦法是最直接,也是最簡單的辦法。拿STM32 ST-LINK Utility這個下載工具來舉例說明:
重點其實都在圖中描述出來了:超過768K地址,實際上還可以讀出來數據的。
(上圖是我拿STM32F103RF真實MCU讀出來的,應用程序起始地址就是0x080C0000,應用程序實際也運行起來了)
說了這么多,其實我想說的是:STM32芯片有許多也是類似,不止我上面舉例的STM32F103RF,103RC標稱的是256K,其實不止256K空間。如果你發現你FLASH空間不足了,通過上面方法可以看看是否不止那么大的空間。
最后留一個問題:你知道為什么ST廠家會這么操作嗎?
上一篇:STM32F4_TIM輸出PWM波形
下一篇:淺談STM32CubeMX的理解心得與運用
推薦閱讀最新更新時間:2025-04-20 09:25

設計資源 培訓 開發板 精華推薦
- AM2G-4824SZ 24V 2 瓦 DC-DC 轉換器的典型應用
- 用于開關電源的 LT1185CQ 輔助 + 12V 低壓差穩壓器的典型應用電路
- NB3H5150MNGEVB:2.5V/3.3V 低噪聲多速率時鐘發生器評估板
- SC8701 Evaluation Board
- 具有備用電源監控功能的 LTC4420CMSE 18V 雙輸入微電源路徑優先器的典型應用電路
- LTC4446 的典型應用 - 高壓高側/低側 N 溝道 MOSFET 驅動器
- CAN SIC評估板
- 使用 Analog Devices 的 LT1511CSW 的參考設計
- EVAL-AD7782EB,AD7782 評估板,24 位,20SPS,2CH 工業控制 ADC
- LTC3736、5V 輸入、2.5V 和 1.8V 雙輸出降壓轉換器
- 電源設計小貼士 | 服務器電源設計中的五大趨勢
- Akamai 為Linux提供基礎架構支持,助力 Linux 內核持續開發
- 新系列串口EEPROM內置唯一ID碼,適合設備識別、溯源和可持續性應用
- 臺積電:制造的芯片離開工廠之后,很難監控它們的走向和用途
- E3650工具鏈生態再增強,IAR全面支持芯馳科技新一代旗艦智控MCU
- 瑞薩電子廣受歡迎的RA0系列推出新產品, 卓越的功耗、更寬的溫度范圍
- 英飛凌推出全球首款集成肖特基二極管的工業用GaN晶體管產品系列
- e絡盟擴展無源產品解決方案,簡化工程師和買家體驗
- 優化效率:探索有源鉗位正激轉換器的二次整流電路設計和占空比的作用
- Windows Arm64 托管運行器正式支持 GitHub Actions,加速開發流程