-
1 # 超子說物聯網
-
2 # 長風凌空
作為一個點燈工程師,插一句嘴,個人拙見,見諒勿噴。我的意見是,對於使用者最不必思考精通的意義。
1、STM32是什麼。當然,對於大神而言這是個很愚蠢的問題,但是對於我們使用者而言這是個值得思考的問題。ST每年都會在中國舉行峰會,今年的深圳場估計還是馬可波羅那。每一次會上一般都有新的片子亮相,同時在不同的展廳也會有不同方向的方案商。當然,我這種人也不是什麼厲害的角色,去展會無非就是看看開發板和蹭飯的。峰會過程中會送開發板,自助餐免費,而且挺豪華的,程度上是兩個海底撈吧。去年的入場券是在電子發燒友那領取的,大家也可以去關注一下。
STM32峰會
所以,對於我們而言已經是方案下的使用者了。當然,這裡不包括一些特殊的廠商。有一次我去一家企業面試,我當時說我測溫度用的是LM75和MAX30XX這類的IIC通訊IC測。人家說,你這是不行的,我們都是使用ADC+自己的模擬的電路測。
說到這裡,只是想說,如果不是在所謂的方案商,那麼我們做的工作就是應用型而不是研發型。這裡不是說咱們不能做研發,而是時間不允許。真正的工作中一般不是使用一種微控制器,我們公司以前有個測量的方案:剛開始是STM32F103+藍芽模組,後來就直接換成dialog的一款藍芽SOC(就是小米手環裡面使用的主控晶片)。
所以,歸根結底一句話:STM32是實現功能的一個工具,我們是使用工具的人。
2、怎樣使用STM32。這個問題,似乎不是問題。其實,它是。
一方面,就以現在最普通的分類來看,在使用STM32上就會有電子工程師和嵌入式軟體工程師(STM32)兩個大類。因為前者是軟硬體都需要負責的,也就是說不同的系統裡STM32的微控制器原理圖、PCB圖都需要涉及,甚至邊上的類比電路也逃不掉。STM32也只是需要的技能之一,其他的東西也缺一不可,四個腳的桌子少一個腳都不穩。
反正在我接觸到的工程師裡面,比較厲害的我們傑哥18轉到硬體工程師了,我現在的經理也不怎麼插手板上的類比電路。我所在的公司不是特別大,安卓、iso、結構,也就十來個。在這樣的公司裡,分工已經很明顯了。
以前面試過的一家醫美產品公司,嵌入式軟體工程師(STM32方面)單單就管驅動為主,還是就是一個RTOS。到網站上一搜索應聘需求,要求有幾年的工作經驗,會C語言(當然,有些崗位JD就喜歡寫精通C語言),然後就是外設USB、ADC、Timer、IIC、SPI的應用,附加一些LWIP、ucos、freertos的要求。簡化為,能寫驅動,會操作RTOS,應該是能夠找到一份工作了。
單板
另一方面,除了傳統的微控制器(STM32F1、F4、H7),ST還開始出一些能夠跑Linux的板,那麼這裡的Linux是不是也該囊括進STM32?這只是個玩笑啊,大家不必當真。因為我是不會徒手寫Linux下的UBOOT的,心理上不會,能力上也不會。在這裡,如果會移植uboot、Linux kernel 也是能混口飯吃的,所以並不是人人都要精通。
如果是訊號採集,那就只想著ADC、Timer這些外設+外部類比電路怎麼用;如果是運動控制,那就應該是另外的內容了。當然,一些PID的理論可能也是必修。
同樣,從應用的角度出發,以平均水平來說,STM32的崗位薪資天花板比Linux下的驅動、uboot移植工作的薪資低一些。從業方向上也要窄一些,一些通訊、半導體、網際網路企業一般不招微控制器,在這裡可以在51job網站搜搜華為、騰訊的需求。
3、怎樣評價自己STM32的掌握程度有些同學在大學的時候就接觸微控制器了,畢業後也一直從事相關的工作,就像我傑哥和經理,但是也沒聽說他們精通微控制器。當然了,我只是個混飯吃的水平,離這個要求就更遠了。
一方面,要知道自己對一門技藝掌握的怎樣,自己打分並不合適,可以往自己覺得差不多的崗位投幾份簡歷。其他地方不是很清楚,就深圳而言,微控制器的某些崗位學歷可以放寬到初中和應屆生。就我以前的工作而言(非月薪1W+),似乎也沒什麼技術含量,剛剛進公司的時候也就是焊接主控IC和一些外設電路。只要用心,這是最重要的一條。如果是有工科類的基礎,那就更好了。
真正對某一款微控制器達到熟練的使用程度,似乎沒有太多的技巧,那就是花時間在專案上,不停地打磨。在這個過程中多幹活,少挑刺,做軟體程式設計也可以畫畫原理圖啥的,對加深理解有很大的作用。
如果在工作中,我建議不要頻繁跳槽,除非有了新的發展規劃。技術的掌握不僅僅是需要時間,還需要一定的環境。每次換一個新的工作環境,一般都需要幾個月的時間熟悉新環境。這個時間的花費是值得的,但是如果頻率太高那就該注意了,因為不停倒車人會很累還不見得一定能早到。
另一方面,現在有很多的電子論壇網站,一般會有一些活動、比賽。感興趣的話,大家可以下去了解一下。送開發板、模組比較多的有:電子發燒友、麵包板社群。在交流中也能發現自己的優勢和短板。
4、總結:我的意見是,對於使用者最不必思考精通的意義。學習STM32,無非就是興趣和飯碗。我們要做的就是保護興趣和飯碗,在時間的打磨下慢慢就熟。如果崗位JD上寫著精通,那麼要麼招總監,那麼就是這個崗位JD可能是複製、貼上的。
-
3 # yzw16
大家從各個角度說的都有道理,我也說一個角度,就是會在stm32中使用多工作業系統的水平高出一頭,不帶作業系統只是微控制器開發,只有帶作業系統才可以叫嵌入式系統開發
-
4 # GeniusYC家的自留地
作為曾經搞過一段時間STM32板子的來答一下。
首先,精通就好像我們高考時大綱裡面對各個知識點要求的等級一樣,是一個相對的描述性詞語。精通可以是對於底層的原理以及STM32指令架構等內容很熟悉,理論上很精通。也可以是在應用上很精通,當然這個 就很實用主義了。比如使用STM32完成過很多複雜的專案,使用起來得心應手。
其次,STM 32也分為好多版型,但是基本的指令架構還是相通的,個人建議先從小的專案出發,根據專案的需求,逐個學習基礎知識點。當一個人可以獨立完成一些專案的時候,感興趣的話,可以深究一下指令架構以及底層的組合語言的知識,這樣也就有一定的深度,達到了熟練應用的程度。
最後,相信山外有山,人外有人。永遠都有人比我們更厲害,保持一個求知若渴的心態,不斷學習,終有一天會達到別人眼中的精通的。
-
5 # coolwheel
精通stm32只能算做是工程師的入門 無論你是用ST還atmel那一家的晶片 都只是提供了一個平臺而已 設計最核心的是程式設計思想和演算法 演算法是機器的靈魂 就好比人類的思想。 我舉個例子 假如你做一臺機器人 硬體部分大同小異 但是你想讓這個機器人智慧化 會思考 會學習就要靠我們人類編寫的核心演算法了。機器越智慧設計人員的水平就越高。
下面我說一下怎麼才算精通了stm32
精通stm32你必須要先精通c語言,我碰到很多剛畢業的學生都自稱精通c語言,但是一問指標和結構體就不會用了,而指標和結構體的結合使用又是c語言的精髓,學習結構指標有個很好的辦法就是去看ST提供的標準庫 看裡面的暫存器對映,熟練應用了結構體和指標寫程式的時候能讓你事半功倍。
掌握了c語言然後就是開始學習stm32的操作,最基本的要熟悉的就是stm32的時鐘結構 ,io操作 定時器應用 adc dma和各種的通訊介面. 就是晶片手冊上寫到的stm32外設的都要熟練應用 因為stm32可以做的專案太多了 不同的專案可能需要用到不同的外設 例如電池供電的專案要做低功耗 你要考慮stm32的電氣引數 stm32L系列的選型。 控制bldc電機需要用到高階定時器等。 只有把這些所有的外設都熟練掌握了 做專案的時候用到那個外設都能輕鬆應對 這才算是是你精通了stm32。寫程式的時候庫操作和暫存器操作結合使用效率會更好。
精通了stm32,各種外設沒有問題了 剩下的才是真正考驗水平的時候。程式框架的設計 程式穩定性 出錯機制的設計 演算法的最佳化等 做設計這條路 進無止境!
-
6 # 跟我學微控制器
不請自來,作為一名長期使用STM32微控制器進行開發的老司機,來回答一下這個問題。
首先、掌握微控制器的硬體電路設計是基礎微控制器電路設計是基礎,儘管現在微控制器已經進化到SoC的階段,大部分常用功能模組微控制器已經集成了,比如、USB、CAN、LAN、LCD、Camera等等,但是仍然需要搞清楚電路邏輯和程式碼之間的介面邏輯,比如、模組的地址、如何給模組上電、斷電、復位、開啟/關閉等。如果你的團隊軟體和硬體是分開的,那麼你的電路設計需要輸出一個軟硬體介面文件給到軟體工程師,透過這個文件,軟體工程師能夠順利實現Driver層程式碼設計。
其次、掌握微控制器程式設計是靈魂如果說硬體是一個產品的執行機構,那麼軟體程式就是一個產品的大腦,代表了一個產品的靈魂,我們通常說一個產品不好用不人性化,最多的原因是軟體設計方面的問題,硬體也有,但是相比軟體方面的設計缺陷要少的多。因此,一個良好的微控制器軟體設計是一個產品的重中之重。
那麼如何STM32軟體程式設計呢?採用倒推來羅列一下:
掌握C語言程式設計,主要用到的是C語言,掌握C語言設計必不可少。
掌握軟體程式設計開發環境的使用方法,比如Keil和IAR的整合開發環境,通常我們程式碼就是在整合開發環境中編寫的,包括程式碼編寫、編譯、除錯等等。
掌握軟體除錯方法,可以說軟體除錯佔據了軟體開發絕大部分時間。偵錯程式的熟練使用是軟體程式碼排除Bug的利器。通常語法方面的錯誤編譯器在編譯階段可以給我們提示,不符合C語言語法就編譯不過去。但是程式碼編譯過並不代表就符合實際專案需求,比如邏輯上是否正確、時序上是否滿足要求、指標有沒有越界等等問題必須在程式碼實際執行的時候才會表現出來。Bug的定位分析,通常需要分析軟體執行的過程和時序,偵錯程式進行單片跟蹤除錯就成為必不可少的利器。
除錯工具可以使用整合開發環境自帶的偵錯程式配合ST出品的ST-link系列進行。
第三、根據實際專案需求進行選型並程式設計實現專案需求是目的掌握了硬體和軟體設計,可以根據專案需求進行專案開發了。根據專案原始需要說明文件並對原始需求說明文件進行分析,輸出可以滿足專案需求的初步的設計文件。這其中就包括微控制器選型,軟體設計等。選擇效能過剩的微控制器,必然會帶來成本的增加。當然這不是定死的條件,通常考慮效能、成本、公司的歸一化採購等等問題。
最後、高手進階永遠在路上高手分為狹義上的高手。
狹義上的高手,比如你就只是想成為,一個harder或者coder,那麼你只需要學習硬體電路設計技術即可,比如,EMC/EMC、高速電路設計和電路穩定性等,或者掌握熟練掌握C語言程式設計技術、程式設計演算法、嵌入式系統程式設計等等。
廣義上的高手會再進一步,瞭解具體領域的發展動態,比如,機器人、無人機、機器學習等等,並根據領域的發展、新事物的出現補充新的知識。
-
7 # 皇室大西瓜
我們正在招聘精通STM32微控制器的高階工程師,但是很遺憾,目前來面試的都很少能夠達到我們的標準,目前給到的薪資是25k-30k,座標北京,下面說一下我認為的精通。
對stm32的內部功能模組非常熟悉,舉個例子,如果我們的產品需要對這款晶片進行加密,你可以提供什麼方案,需要操作那些暫存器,流程是什麼,批次生產是否可行。
可以快速定位問題並提出解決方案,舉個簡單的例子,研發中的一款板子,串列埠不輸出資料了,如果查詢問題,從哪裡入手,是否能夠從蛛絲馬跡中抽絲剝繭,找到本質的問題。
IAP升級是進階必須掌握的,如何編寫bootloader,bootloader和app之間在flash中如何分割槽,燒寫發生錯誤了,如何處理,flash是否夠用,這都需要你考慮
-
8 # Marshal3
stm32也只是個工具而已,掌握了stm32其實就像是掌握了螺絲刀的使用,你會用螺絲刀,你覺得人家能給你多少錢?當然會用螺絲刀也需要看你修什麼,修的東西決定你的收入。
其實也不是說你寫的所有程式碼就稱之為演算法,一般的程式碼也只是個業務邏輯而已,一般人能想通的都不能成為演算法,例如你要寫程式碼計算1+1=2:這還能稱之為演算法嗎?幼兒園的小朋友都會了,演算法可以歸結為計算機專業演算法書上的那種,以及自動控制理論上的內容,至於C和mdk那都是玩mcu的最最基礎的基本功,不值得單獨提出來
-
9 # 趕浪無溼鬼見愁
只敢說熟悉,哪敢說精通,99.9%都不敢說精通,主要能滿足需求的同時,寫出工整漂亮的程式碼,好維護,無bug就是此刻的精通
-
10 # 夏夏65246721
要談到精通,就必須要對這個片子的本身及其相關部分都有一定的瞭解,簡述如下。
1.STM32是基於ARM的微控制器系列,因此,對於其核心ARM的體系結構及程式設計模型必須有所瞭解。
2.作為一個ARM系列,必須對系列產品的特色有所瞭解,對各個型號的基本配置做到熟悉,以便應用方案選型時能遊刃有餘。同時也要對各種相關品牌的類似產品有個對比認識,各自優缺點分別是什麼。
3.對於系列產品的內部外設及常用介面熟悉,各個模組的應用有所瞭解。
4.應用開發過程所涉及到的產品生態有所瞭解,供應渠道,價位,技術支援等有所瞭解。開發工具,編譯除錯工具鏈,實時核心及各種服務移植熟悉。常用庫的熟練使用等。
5.量產相關固化方式,韌體校驗與加密,問題分析與解決,產品缺陷等等。
以上基本上可以支撐一個STM32中級工程師。但作為非原廠或者一級代理,幾乎不會有STM32高階工程師或專家這種提法,嵌入式應用領域做到高階,一定不會拘泥於平臺,而是做到超脫。因為作為應用者,單純弄一種平臺永遠是坐井觀天,成長不起來的。
-
11 # 添添_380
不清楚什麼程度叫做精通,本人用stm32已經10年,涉及f0,f1,f4,介面涉及spi,usart,i2c,can,sdio,軟體涉及彙編,ucos專案中程式碼量二級最佳化在無大於64位元組的const下編譯後bin超256k,專案需求都能滿足,滿足不了的也透過別的方式實現。但是我覺得我不敢說精通,平時遇到問題還是會查閱手冊還有上網查詢解決方法,還好這十年使用遇到的問題都能解決掉。
回覆列表
既然談到了精通,那就要看看精通是什麼意思。我們可以在網上搜索一下精通的含義。
我們看到精通的基本解釋,就是透徹理解並能熟練掌握,主要包含兩個方面,一個是透徹理解,另一個是熟練掌握,簡而言之,就是理論和實操都得很牛。那接下來我們就把這兩個概念套入到STM32微控制器上。
其一就是要透徹理解STM32的理論知識,比如STM32的儲存器和匯流排構架,STM32各個系列晶片所包含的外設功能,像是時鐘,GPIO以及複用,中斷,DMA,ADC,DAC,各種高階基本通用定時器,PWM,看門狗,FSMC,SDIO,USB,串列埠,IIC,SPI,CAN,乙太網控制器等等,等等吧。你首先得知道STM32這個微控制器,能夠提供給你什麼樣的工具,以便來解決你實際專案開發中所遇到的各種問題,正所謂水來土掩,兵來將擋,如果你連手下有什麼將領都不知道,那必敗無疑。
其二就是熟練掌握STM32的使用,也就是實操部分。理論知識我們可以透過閱讀各種書籍,技術文章或是ST官方的晶片手冊程式設計手冊等來加深我們對STM32的理解和認識。那麼實操部分想要達到熟練的程度,就要具備非常多的實戰專案經驗了,一個好的將軍一定要在真刀真槍的實戰中來磨鍊,來培養。所以你所具備的實際專案經驗是考核你是否真正精通STM32的一個重要依據。
如果說真能達到精通的層次,還是一定要理論和實操,雙劍合璧融為一體。其實微控制器開發非常考驗技術人員邏輯思維能力,以及資料抽象能力。同一個專案,不同的資料結構,不同的演算法,最終到達的效果可能有天壤之別。而這種能力,也只有在真刀真槍的實戰中才能得到鍛鍊和提升。