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