作為CortexM3市場的占有者,ST公司在2011年推出了基於CortexM4內核的STM32F4繫列產品。相比STM32F1/F2等CortexM3產品,STM32F4的優勢就是新增了硬件FPU
STM32F4相對於STM32F1,主要優勢如下:
① 更先進的內核。STM32F4采用CortexM4內核,帶FPU和DSP指令集,而STM32F1采用的是CortexM3內核,不帶FPU和DSP指令集。
② 更多的資源。STM32F4擁有192 KB的片內SRAM,帶攝像頭接口(DCMI)、加密處理器(CRYP)、USB高速OTG、真隨機數發生器、OTP存儲器等。
③ 增強的外設功能。對於相同的外設部分,STM32F4具有更快的模/數轉換速度、更低的ADC/DAC工作電壓、32位定時器、帶日歷功能的實時時鐘(RTC)、復用功能大大增強的I/O、4 KB的電池備份SRAM以及更快的USART和SPI通信速度。
④ 更高的性能。STM32F4運行頻率可達168 MHz,而STM32F1隻能到72
MHz;STM32F4擁有ART自適應實時加速器,可以達到相當於FLASH零等待周期的性能,STM32F1則需要等待周期;STM32F4的FSMC采用32位多重AHB總線矩陣,相比STM32F1總線訪問速度明顯提高。
⑤ 更低的功耗。STM32F40x的功耗為238 μA/MHz,其中,低功耗版本的STM32F401更是低到140 μA/MHz,而STM32F1則高達421 μA/MHz。
STM32F4家族目前擁有STM32F40x、STM32F41x、STM32F42x和STM32F43x等幾個繫列、數十個產品型號,不同型號之間軟件和引腳具有良好的兼容性,可方便客戶迅速升級產品。其中,STM32F42x/43x繫列帶了LCD控制器和SDRAM接口,對於想要驅動大屏或需要大內存的讀者來說,是個不錯的選擇。目前,STM32F4這些芯片型號都已量產,可以方便地購買到,不過性價比的是STM32F407。本書將以STM32F407為例來講解STM32F4。
內容特點
學習STM32F4有幾份資料經常用到:
《STM32F4xx中文參考手冊》、
《STM32F3與F4繫列CortexM4內核編程手冊》英文版、《CortexM3與M4權威指南》英文版。
其中,常用的是《STM32F4xx中文參考手冊》,該文檔是ST官方針對STM32的一份通用參考資料,內容翔實,但是沒有實例,也沒有對CortexM4構架進行太多介紹,讀者隻能根據自己對書本的理解來編寫相關代碼。該文檔目前已經有中文版本的了,極大地方便了讀者的學習。
《STM32F3與F4繫列CortexM4內核編程手冊》文檔則重點介紹了CortexM4內核的彙編指令及其使用、內核相關寄存器(比如SCB、NVIC、SYSTICK等寄存器),是《STM32F4xx中文參考手冊》的重要補充。很多在《STM32F4xx中文參考手冊》無法找到的內容,都可以在這裡找到答案,不過目前該文檔沒有中文版本,隻有英文版。
後,《CortexM3與M4權威指南》文檔詳細介紹了CortexM3和CortexM4內核的體繫架構,並配有簡單實例。對於想深入了解CortexM4內核的讀者,此文檔是非常好的參考資料。不過該文檔目前隻有英文版。不過由於CortexM3和CortexM4很多地方都是通用的,所以有的時候可以參考《CortexM3權威指南(中文版)》文檔。
本書將結合以上3份資料的優點,從寄存器級別出發,深入淺出,向讀者展示STM32F4的各種功能。總共配有43個實例,基本上每個實例均配有軟硬件設計,在介紹完軟硬件之後馬上附上實例代碼,並帶有詳細注釋及說明,讓讀者快速理解代碼。
這些實例涵蓋了STM32F4的絕大部分內部資源,並且提供了很多實用級別的程序,如內存管理、文件繫統、圖片解碼、IAP等。所有實例在MDK5.11A編譯器下編譯通過,讀者隻須下載程序到ALIENTEK探索者STM32開發板即可驗證實驗。
讀者對像
不管你是一個STM32初學者,還是一個老手,本書都非常適合。尤其對於初學者,本書將手把手地教你如何使用MDK,包括新建工程、編譯、仿真、下載調試等一繫列步驟,讓你輕松上手。本書不適用於想通過庫函數學習STM32的讀者,因為本書的絕大部分內容都是直接操作STM32寄存器的;如果想通過庫函數學習STM32F4,請看《精通STM32F4(庫函數版)》一書。
配套資料
本書的實驗平臺是ALIENTEK 探索者STM32開發板,有這款開發板的朋友可直接拿本書配套的例程在開發板上運行、驗證。而沒有這款開發板的朋友,可以上淘寶購買。當然,如果已有了一款自己的開發板,而又不想再買,也是可以的,隻要你的板子上有ALIENTEK探索者STM32開發板上的相同資源(需要實驗用到的),代碼一般都是可以通用的,你需要做的就隻是把底層的驅動函數(比如I/O口修改)稍做修改,使之適合你的開發板即可。
感謝
衷心感謝意法半導體(ST)中國區高級市場經理曹錦東先生對本書的大力支持,他為本書提供了很多參考資料和指導意見。
衷心感謝陳貴東、譚春風、李小虎、劉勇材、羅建、周莉等人審稿,幫我找到了很多缺陷和錯誤,並提出了寶貴的意見。
衷心感謝北航出版社的支持,正是編輯的認真工作纔使得本書能夠順利的與讀者見面。