覺得簡單,說明ST成功了
越是簡單的東西越容易流行起來。
當年STM32是怎么在眾多單片機里脫穎而出的?因為庫函數這個東西,讓開發變簡單了。
在這之前,單片機主要是51、AVR、PIC、MSP430這些玩意,就是寫個UART通信函數,都要先去搜索下別人的代碼“借鑒”一下,發現別人寫得不完全滿足需求又自己修改,然后慢慢地積累出自己的一套庫,在換下一款單片機的時候這幾年的積蓄發現又用不上。
ST半導體搞這個庫函數,不就是為了降低開發門檻么?
讓開發者專注于更抽象的應用而不需要太關注單片機底層的東西才是大趨勢,ST抓住這個趨勢先發制人才得以迅速占領市場。
什么?直接寫寄存器?匯編?這種炫技的東西絕大多數STM32的目標應用都不需要。什么成本敏感?成本敏感誰選STM32啊,幾毛錢一顆只能用匯編寫的單片機了解一下。
入坑STM32,我們要學習什么
做一個鍵盤/鼠標,可以學習USB協議
做一個聯網設備,需要學習以太網,TCP/IP協議的底層實現
做一個無線設備,可能需要學習藍牙、WIFI或者zigbee的協議
而最終的應用,可能不一定有庫或者包,需要自己去寫底層。如果用模塊,則可能需要學習SPI、I2C或者SDIO接口去連接模塊。
做一個平衡小車,需要學習PID算法,小車相關文章可以看下:STM32平衡小車,文末附代碼、電路圖等資源獲取方式。
做一個攝像頭能需要學習SCCB協議,如果想深入一些,可能需要學習一些圖像處理的知識。
如果這個攝像頭要連接PC,做更深度的處理,則需要學習上位機的編寫,可能需要設計協議或者寫一個服務器,此時可能需要學習開發服務器的知識,以及一門寫服務器的語言,包括不限于C++/Java/python/nodeJs。服務器框架可能也要學一個。服務器都有數據庫,學習個簡單的nosql吧,當然mysql和oracle也可以。
上位機要是需要圖形界面,最簡單的可能是C#,當然C++調用win32 API更好。
如果要做人臉識別、圖形分割,還需要機器學習的知識,可能需要python和tensorflow / pytorch框架,當然其他語言也可以,但可能更復雜,而機器學習,基礎是數學,嗯~,很難的那種。
現在都是手機端操作,Android可能學一下,Java走起。如果碰巧手機是蘋果的,objective-c學起來。
如果繼續深入,做一個更復雜的設備,首先需要自己設計板子。這時候PCB設計需要學,模電數電需要學,電路原理更需要學。
軟件層面,可能發現裸機已經不夠用了,可能需要學習ucos/freeRTOS之類的操作系統,甚至自己學習寫一個操作系統內核。如果這個系統要求健壯、高效,需要深入理解操作系統、數據結構、算法、優化、匯編語言等。
上述種種內容還不少,不知不覺已經學習了計算機科學的一部分了,對計算機科學有了基本的了解了。
如果大家覺得這是強行關聯,其實不是。綜上所述,只是用STM32做了一個處理單元放在服務器端的小機器人,能保持平衡、識別人臉、能在PC端和手機端控制而已。
語音識別、對話系統等功能還沒說,這些可能需要更多自然語言處理、乃至強化學習的知識,你發現,往往效果不盡如人意,這不是你技術不好,而是這個世界的瓶頸,恭喜,可以看論文、寫論文,為人類在計算機、人工智能領域的突破做貢獻了。
什么?想要把運動單元做波士頓動力那樣的?這事情就更復雜了,不然你以為我怎么入坑的?
當技術往深了說
技術深究起來自己都怕,比如剛學習了STM32的cortex架構,那其寄存器、指令集、內存是如何實現的?剛了解這些,那其鎖存器是哪一種,取指與解碼過程是怎樣的?加法器又怎么實現?剛了解三極管和布爾邏輯運算,那三極管是怎么工作的?剛了解PNP和NPN,那共射特性曲線是怎樣的?為什么載流子會運動,正偏反偏是什么?為什么磷、硅、硼作為半導體材料,會形成電子流動?空穴是否能流動?
重點不是STM32能做什么,而是我們能用STM32做什么?能做什么程度的產品,市場競爭力如何,甚至考慮是否滿足了用戶未被滿足的需求,也就是填補了市場空白。技術并不是獨立的,而是拓撲的?! ?/p>
評論
查看更多