初中生文憑學習單片機STM32很簡單嗎
///插播一條:我自己在今年年初錄製了一套還比較系統的入門單片機教程,想要的同學找我拿就行了免費的,私信我就可以哦~點我頭像黑色字體加我地球呺也能領取哦。最近比較閒,帶做畢設,帶學生參加省級或以上比賽///
1.覺得簡單,說明ST成功了。
當年STM32是怎麼在眾多單片機里脫穎而出的?因為有庫函數這個東西。
在這之前,單片機主要是51、AVR、PIC、MSP430這些玩意,就是寫個UART通信函數,都要先去搜索下別人的代碼「借鑒」一下,發現別人寫得不完全滿足需求又自己修改,然後慢慢地積累出自己的一套庫,在換下一款單片機的時候這幾年的積蓄髮現又用不上。
ST半導體搞這個庫函數,不就是為了降低開發門檻麼?
讓開發者專注於更抽象的應用而不需要太關注單片機底層的東西才是大趨勢,ST抓住這個趨勢先發制人才得以迅速占領市場。
什麼?直接寫寄存器?彙編?這種炫技的東西絕大多數STM32的目標應用都不需要。什麼成本敏感?成本敏感誰選STM32啊,幾毛錢一顆只能用彙編寫的單片機了解一下。
2.入坑STM32,我們要學習什麼
·做一個鍵盤/滑鼠,可以學習USB協議
·做一個聯網設備,需要學習乙太網,TCP/IP協議的底層實現
·做一個無線設備,可能需要學習藍牙、WIFI或者zigbee的協議
而最終的應用,可能不一定有庫或者包,需要自己去寫底層。如果用模塊,則可能需要學習SPI、I2C或者SDIO接口去連接模塊。
做一個平衡小車,需要學習PID算法。
做一個攝像頭能需要學習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端和手機端控制而已。
語音識別、對話系統等功能還沒說,這些可能需要更多自然語言處理、乃至強化學習的知識,你發現,往往效果不盡如人意,這不是你技術不好,而是這個世界的瓶頸,恭喜,可以看論文、寫論文,為人類在計算機、人工智慧領域的突破做貢獻了。
什麼?想要把運動單元做波士頓動力那樣的?這事情就更複雜了,不然你以為我怎麼入坑的?
3.當技術往深了說
技術深究起來自己都怕,比如剛學習了STM32的cortex架構,那其寄存器、指令集、內存是如何實現的?
剛了解這些,那其鎖存器是哪一種,取指與解碼過程是怎樣的?
加法器又怎麼實現?剛了解三極體和布爾邏輯運算,那三極體是怎麼工作的?
剛了解PNP和NPN,那共射特性曲線是怎樣的?
為什麼載流子會運動,正偏反偏是什麼?
為什麼磷、矽、硼作為半導體材料,會形成電子流動?空穴是否能流動?
重點不是STM32能做什麼,而是我們能用STM32做什麼?能做什麼程度的產品,市場競爭力如何,甚至考慮是否滿足了用戶未被滿足的需求,也就是填補了市場空白。
技術並不是獨立的,而是拓撲的。