整理:Miler Shao 今天冬至,也是個節日,祝大家節日快樂,尤其一直耕耘在調試一線的工程師們。 STM32F1系列MCU隸屬同一ARM CORTEX M3內核,依據其自嵌的Flash 容量大小及互連功能特色,ST 公司將其大致分為 5類器件,分別是小容量器件、中等容量器件、大容量器件、超大容量器件、互聯型器件。 小容量器件[low-density devices]: 內部FLASH容量在16-32K Byte的STM32F101、STM32F102、STM32F103器件。 中等容量器件[Medium-density devices]: 內部FLASH容量在64-128K Byte的STM32F101、STM32F102、STM32F103器件。 大容量器件[High-density devices]: 內部FLASH容量在256-512K Byte的STM32F101、STM32F102、STM32F103器件。 超大容量器件[XL-density devices]: 內部FLASH容量在768-1024K Byte的STM32F101、STM32F102、STM32F103器件。 互聯型器件Connectivity line devices]: 特指帶雙CAN和USB OTG功能的STM32F105XX、STM32F107XX系列的器件。 整體上講,這5類器件軟硬件兼容性極高,尤其硬件管腳安排上。相同管腳數、不同容量的器件的管腳安排是完全一致的。 當然這5類器件也存在著一些細微的差異。 關于那些差異,這里僅就平常朋友們常遇到或栽跟頭的地方,跟大家作三點分享交流。 1、這幾個類型的器件所支持的中斷個數及矢量安排有差別。在工程項目里,所選擇的啟動文件就不一樣。開發時參照器件類型選擇 startup_stm32f10x_ld.s /startup_stm32f10x_md.s /startup_stm32f10x_hd.s/startup_stm32f10x_xl.s/startup_stm32f10x_cl.s 的其中之一。 這里出現最多的問題現象就是,在某個器件里跑得好好的程序,尤其跟中斷有關的代碼,移植到另外一個器件時發現不聽使喚而異常。 2、這幾個類型的器件內部flash的頁大小[page size]有所不一樣。在涉及flash編程時要特別注意這點。其中小容量器件、中等容量器件的page size 為1K,而大容量器件、超大容量器件、互聯型器件的page size 為2K。 這里容易出現的問題就是針對某個器件做的IAP,換到別的器件時結果就異常了。 3、互聯型器件跟其它同時具有CAN和 USB外設的器件在使用上有差異 。 互聯型器件的CAN和 USB外設可以同時開啟使用,而其它同時具有CAN和 USB外設的器件不可以同時使用CAN和 USB外設,因為 在這些器件里 ,CAN和 USB是共享一個緩沖區。 相比前面兩點,這個問題相對咨詢得少些。不過如果不明了這點,假設哪位工程師因為產品功能調整或成本考慮,從互聯型器件換為某大容量器件時,恭喜,估計又要折騰一把。順便提下,互聯型器件的時鐘樹跟其它器件也略有不同,移植時也稍微留意下。 幾小點拋磚引玉似的跟大家分享下,任何一個地方若是你忽略了,都可能被折騰得夠嗆。
|