tft每日頭條

 > 生活

 > 嵌入式開發教程

嵌入式開發教程

生活 更新时间:2024-12-04 23:49:37

告訴你一個殘酷的現實,即便告訴你學習方法和路徑,能堅持下來的也寥寥無幾。

除此以外,還有學習過程中的突發情況,比如走彎路不知道,碰到問題沒人指導。

我覺得自學技術就是和人性弱點的博弈,枯燥、焦慮、迷茫、無助都是自學必經的妖魔古怪。

能否取得西經,更多是對你魄力和毅力的考驗,哪怕你走過的彎路能繞地球一圈,最後還是能到達終點。

如果你明白這些,還想嘗試,請繼續往下看,否則不要輕易嘗試,半途而廢還不如不要開始。

以上,是我10年前自學轉行的感悟。

當時,從電氣專業轉行到嵌入式單片機軟件開發,最終找到工作花了4個多月。

雖然現在門檻不一樣,但是方法可以通用。

說到嵌入式開發,大多數人想到的是ARM、Linux、STM32。

這都太廣泛,嵌入式開發涵蓋的知識體系太龐大了,做了10年,我依然覺得我隻是嵌入式開發這個知識海洋裡的一根針而已。

但這不代表你需要花費1年,甚至幾年的時間才能學會。

隻要定位清晰,學習路徑正确,再加點點堅持,3-5個月完全能從零基礎達到就業的程度。

先以找工作成功入行為首要目的,是一個成年人該有的覺悟,入行後有工資支撐了,同時也能在工作中深造,才能形成良性循環

千萬不要一上來就想學成專家,容易餓死。

一、定位

嵌入式開發分為很多方向,從大方向來看分為嵌入式硬件開發嵌入式軟件開發

  1. 嵌入式硬件開發

主要負責設計産品電路、PCB layout、樣品焊接和調試、後期生産跟進。

學習硬件,我個人感覺性價比是比較低的,主要有幾點原因。

①.硬件主要還是要通過實物不斷實踐學習,不同的電路你要搭建不同的配套硬件測試你的理論是否正确。

這就導緻需要付出的成本比較大,比如說要買示波器、萬用表、電烙鐵、焊錫、面包闆、元器件等等。

還有就是不一定每個人都有這種學習環境,在自己睡覺的小房間焊接可不是一件好事。

②.目前具備實際産品參考意義的硬件教程很少,大多都是幾年甚至十幾年前的老教材,早都用不上了。

③.大多數普通硬件工程師崗位的工資都低于嵌入式軟件工程師。

④.現在電路集成度很高,動不動就是芯片方案解決,一般公司很難接觸到核心技術,都是拿别人現成的電路用。

這種一般軟件開發個幾年都能自己設計電路了。

⑤.硬件抄闆代價小,幾千塊能完完整整把你的硬件電路抄出來,軟件抄襲比較難,需要的成本高。

所以,我一直強調先把軟件學好,如果想走全棧再針對性去學硬件。

2.嵌入式軟件開發

嵌入式軟件開發又分為很多方向,比如說主流的有單片機開發、Linux驅動開發、Linux應用開發、安卓應用開發、FPGA/DSP開發等等。

嵌入式開發教程(嵌入式開發怎麼自學)1

兩大方向,還細分很多小方向,每個方向都是一個職位,每個方向所需要的學習的内容體系都不同。

如果這個定位你不搞清楚,你就會覺得嵌入式開發很難,又要學硬件、又要學STM32、又要學ARM、又要學Linux,猴年馬月才能學完。

二、根據定位規劃學習路徑

當初我處于對文憑、非本專業的自卑感,讓我選擇了比較好入門的單片機開發方向。

做的越久,我越發現,單片機開發并不是和大家想象那樣比Linux方向簡單。

相反,Linux方向的開發很多都有現成的庫可以調用,而單片機開發大多數要從控制芯片引腳開始。

還有就是一些協議棧,比如說藍牙協議棧、Zigbee協議棧等等,也是非常考驗你的編程功底的。

這些協議棧有非常多值得學習借鑒的地方,你完全可以剪裁、移植、改編、優化成自己的程序架構為自己産品所用。

嵌入式開發教程(嵌入式開發怎麼自學)2

現成的系統,不管是實時操作系統,還是Linux,既要做到通用性、又要做到移植性等苛刻條件,所以普遍比較占用微控制器和處理器資源。

而自己寫架構就不同,你完全可以根據自己的産品定制,這樣既保證系統的優點,又能最大程度減少芯片資源浪費。

這比你直接用所謂的RTOS和操作系統水平高多了。

下面,針對我最熟悉的單片機開發方向,根據當下市場對這個職位的需求,系統講解下這個方向的學習路徑。

嵌入式開發教程(嵌入式開發怎麼自學)3

  1. c語言基礎

單片機支持c語言和彙編語言來編寫程序,目前主流都用c語言,彙編主要做小家電消費類産品,可能你10年都用不上,所以以學c語言為主。

這塊的教程也泛濫了,但是針對單片機的c語言不多,大多數以做純軟件為基礎講解的。

雖然都是c語言,實際還是有差别的,比如說寄存器配置這些。

無際單片機編程有一套針對單片機c語言編程的教程,結合了工作當中最常用到的語法,節約大家學習時間。

教程也是完全開源的,可以到小坡站找無際單片機編程直接看。

嵌入式開發教程(嵌入式開發怎麼自學)4

2. 電路基礎

這個環節進坑最多的就是死磕模電,我也走過這種坑,學到三極管放大就開始各種數學公式,學不動了。

為此也差點放棄,工作久了才發現,書本教程數學公式都用不上,三極管實際應用最多的就是開關作用。

假如是NPN型的三極管,你隻要記住B極電壓大于E極電壓0.7V以上,三極管就能導通就行了。

不同型号的三極管可能不一定是0.7V導通,也有更小的,但實際電路設計要讓三極管導通時,E極一般接地,B極由單片機引腳控制,電壓都會遠遠大于0.7V。

就是這種細節的區别,如果你去死磕三極管截止、放大、飽和,學習效率會慢幾倍。

3. 51單片機

很多人說51單片機淘汰了,沒必要學,純屬外行瞎扯。

越原始的單片機,你越能接觸到底層開發,51單片機能讓你理解單片機的底層原理,如何配置使用芯片資源。

STM32單片機雖然火,但是都是封裝好的庫,做應用多一點,一般不需要配置寄存器。

這樣,你永遠無法知道單片機的原理。

這個階段必須要配備一個開發闆或者通過項目去學習。

單片機是一門偏向硬件控制的技術,不像純軟件一台電腦就行。

建議新手從STC89C52RC單片機入手,目前市面上開發闆很多也是用這個芯片做的,燒錄工具便宜、資料教程豐富。

4. 51單片機項目

這一個階段最重要,可以說比你後面學STM32還重要。

你熟練使用STM32,不一定有用51單片機做過2-3個項目的人牛逼。

單片機隻是一個工具,怎麼把這個工具通過自己天馬行空的想象做成落地産品才是我們最終目标。

這個階段就是檢驗你前面學習成果最好的時候,開頭會比較煎熬,因為腦子裡沒有思路,有思路有不知道怎麼用代碼去實現。

最好的方法就是先學習别人做的項目,看下别人功能實現思路是什麼,代碼是怎麼寫的。

最後自己再根據自己想法寫一遍,寫完分析一下自己的代碼和别人的代碼各有什麼優缺點。

就是這煎熬的過程,别去想捷徑了。

5. C語言進階

大多數51單片機程序還是比較簡單的,不用c語言的高級語法指針、結構體也照樣能實現功能。

但是後面這些c語言高級語法的用法就顯得尤為重要了,可以說不懂指針、結構體這些基礎知識,你永遠隻能停留在初級水平。

STM32單片機的固件庫也大量使用了指針、結構體。

這塊我們無際單片機編程也有配套比較完善的系統教程,其中包括枚舉、指針、結構體、回調函數、隊列算法、任務管理等非常使用的知識。

嵌入式開發教程(嵌入式開發怎麼自學)5

為你後續學習STM32,RTOS打下紮實基礎,教程也是完全開源的,在小破站直接找到。

當然如果隻是單純學習STM32,隻需要學指針、結構體就足夠了,如果你沒一定的項目經驗,裡面很多知識點可能聽不懂。

6. STM32單片機

我學STM32單片機是通過項目學會的,當時公司有新産品,要把原來NXP的替換掉,價格太貴了。

有實際項目驅動,你學習會更有針對性一點,效率也更高。

當然通過開發闆學習也是可以的,不用把所有外設資源學完,隻需要學習最常用的就可以了,後續工作需要了再針對性學習也很簡單。

具體要學哪些外設,可以參考我上面那個思維導圖。

7. STM32項目

到這裡,已經是入門了,剩下的重點就是提高你的編程思維水平

雖然我們最理想的自學,省錢嘛..

但我建議最快的方法就是找一個大神帶項目,一個項目頂你自學幾年。

我并沒誇張的意思,因為自己做了10年,其實真正進步最大的也就那2,3年接觸到大神代碼的時候。

不過當時他已經離職了,完全靠自己死磕,磕了幾年才完全吃透。

如果實在不舍得花大錢,可以到某寶買一些項目套件自己DIY,比如說無人機、尋迹小車之類的項目。

不過這種項目隻能讓你熟練編程,不能提升你的認知水平,大多數都是以實現功能為主。

實際産品開發的時候需要考慮到程序可擴展性、可移植性、執行效率這些東西。

不知不覺肝了3000多字,純手打原創,如果對你有幫助,麻煩給我安排個三連鼓勵。

最後祝大家學有所成!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved