單片機(jī)新手學(xué)習(xí)的4個(gè)誤區(qū)
嵌入式
1已閱讀
2023-05-08 15:18:41
導(dǎo)讀
很多單片機(jī)初學(xué)者不知道怎樣才能學(xué)好單片機(jī),我們現(xiàn)在入門用的比較多的是8051單片機(jī),它的資料比較多,用的人也較多,市場(chǎng)也很大,51 單片機(jī)內(nèi)部結(jié)構(gòu)相對(duì)簡(jiǎn)單,非常適合初學(xué)者學(xué)習(xí),建議初學(xué)者將 51 單片機(jī)做為入門級(jí)芯片。
在剛接觸單片機(jī)的初期,有許多人認(rèn)為單片機(jī)非常難學(xué),有太多的指令,太多的語(yǔ)法,還要會(huì)硬件,其實(shí)這些都不是問題,下面和大家聊聊,學(xué)習(xí)單片機(jī),有哪些誤區(qū)?如何走出這些誤區(qū)?
誤區(qū)1:51單片機(jī)入門簡(jiǎn)單
51單片機(jī)入門簡(jiǎn)單?我對(duì)于這個(gè)觀點(diǎn)持保留意見。想要入門51單片機(jī),我不僅熟悉該款單片機(jī)外設(shè),而且還要充分了解寄存器的某位的意義。對(duì)于時(shí)鐘,定時(shí)器的配置必須了如指掌。這樣無疑會(huì)增大我的學(xué)習(xí)難度與熟悉的周期。如果我們使用32位單片機(jī)的庫(kù)函數(shù)模式,我們只需要具備C語(yǔ)言的知識(shí),了解API函數(shù),直接看已經(jīng)注釋過的寄存器意思即可,不需要了解其底層的硬件實(shí)現(xiàn),更不需要了解某個(gè)寄存器某個(gè)指定位的意義了。這樣,減少了我的量,從而降低了開發(fā)難度。你說是51單片機(jī)入門簡(jiǎn)單,還是32位Cortex內(nèi)核微處理器簡(jiǎn)單?
我是一個(gè)務(wù)實(shí)的人,正做過一個(gè)產(chǎn)品就知道,成本核算也要站很大一塊。舉個(gè)例子我之前做了一個(gè)多軸數(shù)控設(shè)備,先不談算法的事如果你用樹莓派去做,同樣的功能一個(gè)樹莓派的板子可能要200元,如果用stm32做自己畫板子30塊就能搞定,要是你做產(chǎn)品你會(huì)選哪種方式呢。
成本都是左右應(yīng)用的主要因素。項(xiàng)目的立項(xiàng)主要考慮成本,銷售的定價(jià)主要成本。低成本的方案才會(huì)在市場(chǎng)里占有優(yōu)勢(shì)??墒?,51單片機(jī)真就是最低成本了嗎?非也?,F(xiàn)在按照功能劃分,部分Cortex-m0系列的32位單片機(jī)的成本也能做3元人民幣。其性能已經(jīng)是51單片機(jī)的好幾倍了,而且更容易開發(fā)與維護(hù)。
還有另外一個(gè)成本:開發(fā)難度成本。51單片機(jī)不支持在線調(diào)試,有一些問題在編程初期沒有發(fā)現(xiàn),只有與硬件連接后才會(huì)顯現(xiàn)出現(xiàn)來,例如控制操作中經(jīng)常用到的延時(shí)。這時(shí)在線調(diào)試的巨大優(yōu)勢(shì)就體現(xiàn)出來了,它可以極其方便的查看微處理器當(dāng)時(shí)的狀態(tài),使得問題的分析變得簡(jiǎn)單而透明。從而,有效降低開發(fā)的難度,縮短開發(fā)周期,節(jié)約開發(fā)資金。
誤區(qū)3:51單片機(jī)可以學(xué)習(xí)寄存器的操作
寄存器不用死記硬背,有著10年老鳥經(jīng)驗(yàn)的我,連一個(gè)寄存器都記不住。需要配置寄存器的時(shí)候,直接在網(wǎng)上或者書本上參考別人現(xiàn)成的配置程序是上策,查找芯片數(shù)據(jù)手冊(cè)是中策,死記硬背寄存器是最最下策。
51單片機(jī)可以學(xué)習(xí)寄存器的操作,這一點(diǎn)兒是不容置疑的。我們分析一下其更深層的原因。在MSC-51單片機(jī)的編程環(huán)境中,最初是以匯編語(yǔ)言為主要編程語(yǔ)言。要知道匯編語(yǔ)言就是直接操作寄存器的,匯編語(yǔ)言是無法做到C語(yǔ)言的函數(shù)調(diào)用與封裝的。如果說51單片機(jī)是以操作寄存器為優(yōu)點(diǎn),我覺得更應(yīng)該說51單片機(jī)操作寄存器是一種無奈,是只有一個(gè)選項(xiàng)的選擇題。
誤區(qū)4:c語(yǔ)言需要學(xué)完。
通俗易懂的C語(yǔ)言,方便移植的C語(yǔ)言與硬件平臺(tái)相對(duì)應(yīng)的編譯器聯(lián)合,就能完成硬件的操作。有了簡(jiǎn)單、方便的方式,我們?yōu)槭裁催€要考慮繁瑣,復(fù)雜的匯編語(yǔ)言與寄存器操作呢?
你不用學(xué)指針,你不用學(xué)帶形參的函數(shù),你不用學(xué)結(jié)構(gòu)體,你不用學(xué)宏定義,你不用學(xué)文件操作,你也不用死記繁瑣的數(shù)據(jù)類型。你只要會(huì):
5條指令語(yǔ)句switch語(yǔ)句,if else語(yǔ)句,while語(yǔ)句,for語(yǔ)句,=賦值語(yǔ)句。
7個(gè)運(yùn)算符+,-,*,/,|,&,!。
4個(gè)邏輯關(guān)系符||,&&,!=,==.
3個(gè)數(shù)據(jù)類型unsigned char,unsigned int,unsigned long。
3個(gè)進(jìn)制相互轉(zhuǎn)化,二進(jìn)制,十六進(jìn)制,十進(jìn)制。
1個(gè)void函數(shù)。
1個(gè)一維數(shù)組code(或const)unsigned char array[]。
那么世界上任何一種邏輯功能的單片機(jī)軟件你都能做出來。