移動的好時機; 8位快要死了;當您以5美元的價格購買帶有STM32F103的闆卡時,STM32F103是功能強大的32位ARM微控制器(甚至帶有USB!),毫無疑問,時代已經改變。
您已經有了一些很好的答案,但主要是我會說“忘記組裝”,幾乎會說“忘記關心cpu的工作原理”-有一天會有一個極端的案例在您需要深入研究(特定的優化或用於調試)的地方,但是ARM內核(根據設計)可以很好地運行C代碼,並且您很少需要深入研究內膽。
這確實意味著您將花費一定的時間來應對編譯器(尤其是鏈接器和makefile)的問題,以掩蓋您看不到的錯誤,但是這些錯誤都是可以克服的。
關於ARM的工作原理(即ARM cpu書籍)的內容非常繁瑣,而且直到您真正需要優化的那一天才變得非常有趣(您會驚訝地發現,當您擁有最高級的ARM時) 32位寄存器,並且PLL的CPU時鐘在100mhz左右)。
與較新的“ Thumb2”相比,“老套”的ARM指令集更容易閱讀反彙編,後者是您在大多數現代微控制器級ARM(Cortex)上發現的-但是彙編語言說明的內幕大多淡出背景。如果您擁有正確的工具集(尤其是具有斷點/單個步驟等的不錯的源代碼級調試器),則根本就不必擔心它完全是ARM。
一旦您進入世界32位寄存器和32位數據總線寬度,以及您想在片上獲得的所有東西,您再也不需要回到8位CPU了;基本上,“放輕鬆”並且編寫代碼更易讀而不是效率通常沒有任何懲罰。
但是……外圍設備……是的,這就是問題所在。
您肯定會在現代MCU上玩很多東西,其中很多都是花哨的東西。您經常會發現複雜的世界,遠遠超出了AVR,PIC和8051片上外圍設備。
一個可編程計時器?不,有八個! DMA? 12個具有可編程優先級和突發模式,鏈接模式以及自動重載和.. and ..和... i>的通道怎麼樣? I2S?數十個引腳混合選項?重新編程片上閃存的十五種不同方式?肯定!
通常感覺就像您從飢荒過渡到外圍設備的盛宴一樣,通常您會佩服整塊芯片,但卻很少使用(因此,時鐘門控)。
如今,片上硬件的數量(以及僅一個供應商的芯片產品線的變化)就令人難以置信。一個芯片供應商當然會傾向於重複使用IP塊,因此,一旦您熟悉某個品牌,它就會變得更容易,但“如今完成工作變得瘋狂起來。”
如果有任何外圍設備及其交互(以及DMA和中斷,總線分配以及and and ...)非常複雜(有時,數據手冊中描述的精確並非如此),因此工程師經常擁有最喜歡的ARM MCU系列,並且傾向於僅僅因為他們熟悉外圍設備和開發工具就想堅持使用它。
好的庫和開發工具(例如,使用適當的調試器進行快速的編譯+調試週期)和大量可運行的示例代碼對於當今選擇ARM MCU而言,項目絕對至關重要。似乎大多數供應商現在都擁有極其便宜的評估板(
我確信您已經註意到,一旦您超越了具有ARM的微控制器級別並進入SOC級別(例如Raspberry Pi / etc風格的SOC),那麼這些規則徹底改變這一切都關於哪種類型的Linux你要運行,因為 - 有難以察覺的例外 - 你會狂叫瘋嘗試別的
基本上;無論在這次演出中為您預先選擇的CPU是多少,都可以購買一些來自不同供應商(TI,STM,Freescale等)的基於超便宜Cortex的評估板,並且 div>
最後的建議;一旦在數據表中找到描述所使用的 exact 零件編號芯片的引腳混合選項的頁面或三頁,您可能需要將其打印出來並粘貼在壁。在項目後期發現由於引腳混合而無法實現某種外圍設備的組合是沒有意思的,有時信息被掩埋了,您發誓他們會試圖隱藏它:-)