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











評(píng)論