從凡人到築基期的微控制器學習之路

2021-09-11 06:59:44 字數 2812 閱讀 8748

從小我對電子器件有比較濃厚的興趣,特別是對那些會動的電子玩具更是好奇,好奇它為什麼會動,好奇它為什麼能無線遙控。但小學、初中、高中的課本無法為我解答,唯一接近的就是物理課了,所以我學得很認真,不為別的,只因它能滿足我的部分好奇心。興趣是最好的老師,或許就是如此吧。

但是隨著年齡的增長、學業的加重,越來越沒有心思去玩這些小玩具,而身邊也沒有人懂,只能將這些東西深埋心底了。但慶幸的是我考上了大學,並加入了實驗室,有機會接觸到不一樣的東西。

猶記得剛進入實驗室的時候,在書櫃中看到一本關於51微控制器的書,很是好奇。不是對內容好奇,而是書名,因為從來沒有見過以數字作為書名的書。這就是我和51微控制器的第一次見面了。

後來實驗室開始對新生進行培訓,才漸漸地知道原來世界上還有微控制器這種神奇的東西,而隨著更深入的學習,才知道這種技術已經發展了幾十年了。

當時培訓使用的是 stc12c5a60s2,聽說它是 51 核心,和 51 微控制器相容。但是 51 是什麼,核心是什麼,我都不明白,但是我想學,我想讓它為我點燈,也想用它製作乙個電子鬧鐘(這是我加入實驗室的乙個目標,現在想來這個目標好低階啊)。所以什麼都不懂的我開始跟著學長學習,學習 c 語言,學習微控制器技術。

沒有任何基礎的小白學習這些東西是很痛苦的事情,就像是讓乙個完全不懂英語的人去寫、去說一樣。書上的字倒是都認識,但是連起來就不知什麼意思了,還有各種技術名詞更是加大了學習難度。電平是什麼?高電平、低電平又是什麼?為什麼不說電壓,而說電平?flash 是什麼,ram 又是什麼?序列、並行資料?匯流排?埠?i/o 口?……這些名詞都要一一弄個明白,否則一句話讀下來你根本不知道是什麼意思。還好當時自己還知道通過手機上網搜這些東西(幸好以前會用手機搜**看),否則根本不知道該怎麼辦才好。

正因為零基礎,所以需要付出比別人更多的努力,特別是對我這個連電腦都不怎麼會用的人來說更是如此。高中有一段時間沉迷於遊戲,雖然不是網遊,卻也無法自拔。所以下定決心不再玩遊戲了,但也正因為如此,我對電腦可謂一竅不通。記得當時學習新建工程的時候,我都不知道要把乙個個檔案放在乙個資料夾裡面,所以總是把學長的電腦桌面弄得亂七八糟的。而當我學習了新建資料夾的時候,卻總會忘記資料夾所在的路徑,所以又得重新來過。因此我在學習微控制器技術的時候,要克服的不僅僅是技術問題,還有電腦的操作問題。

為了學習微控制器技術,學長要求安裝兩個軟體,乙個是keil,乙個是 altium designer。但是對於我這個電腦渣渣來說,也是難為我了。不知道該如何安裝,更不知道該如何破解。同學說安裝軟體只要一直點「next」就可以了,但是我點了幾次後發現「next」變灰了,點不了了,只能請同學幫忙。後來看同學操作才知道,還要同意協議、填寫資訊之類的才行。後來勉勉強強記住了吧,又發現還要破解軟體,但好好的乙個軟體為啥要破解啊,我也不懂,更不要說動手去破解了,所以又只能請同學幫忙。為了安裝這兩個軟體我可是吃了不少苦頭,特別是 altium designer,因為它的安裝時間太久了,但後來我發現對於乙個微控制器軟體開發者來說,這個軟體根本就不需要好吧。

大一的時候沒有帶電腦,所以只能借實驗室的電腦學習。而這些軟體又是學習的必備軟體,所以我就暗自記下安裝步驟,並用圖書館的電腦嘗試安裝。經過多次練習總算記住了。現在想來其實自己很傻,當時如果有寫筆記的習慣,直接截圖,然後把安裝過程記錄下來就可以了,幹嘛要用腦子去一遍遍的記啊,而且就算記住了,到現在也忘記了啊。事實上上網搜教程也是不錯的選擇,但對於我乙個電腦小白來說,根本就不知道這些東西網上是能搜到啊。

在學長的帶領下,磕磕碰碰的學習著 51 微控制器,因為還要學習 c 語言,所以學長就推薦譚浩強的 c 語言程式設計那本書。雖然書上的內容現在看來確實很不錯,但以我當時的水平來看確實很難理解,所以這本書在前期並沒有啃多少,因為根本啃不動啊。

實驗室對於大一新生處於放養狀態,沒有人會管你,全靠你的自覺。記得當時有80多新生一起學習,但最終留下來的不到十人,而這十人之中大部分是我們班的(我們是特殊班級,理論少,實踐多)。而我能堅持下來的很大一部分原因是因為興趣,所以當我成了學長,成了大一新生能否進入實驗室的面試官的時候,我都會從側面去觀察、了解這個人是否對這個感興趣,因為我知道,在實驗室這種開放的環境下,是否被淘汰取決於自身,而不是實驗室。但我還是會給新生乙個機會,因為有的時候,興趣是可以培養的,所以我面試的大部分人都是通過了的,只有一些目的不純(為了比賽證書)或者態度不好的人才不讓他通過。

用了一年時間的時間學習 51 微控制器知識,很多東西並沒有完全弄明白,但周圍的同學都開始學習 stm32 微控制器了,所以我只能放下 51 微控制器,開始學習更高階的 stm32。現在看來這個選擇是對的,因為不是所有的東西都一定要弄得清楚清楚的,覺得差不多的時候就該換更高階的東西學習。記得曾經看過這樣乙個小故事,乙個**家教人彈琴,開始的時候是很簡單的樂譜,在學員彈了一段時間後,雖然彈的不是很好,但這個**家還是換了乙個更難的樂譜,學員不明白,但還是跟著學習了。過了一段時間,在學員沒有練習好的情況下,**家又拿了乙個更難的樂譜叫學員彈。一段時間後,乙個學員忍不住問老師這是為什麼。**家直接拿了最開始的那張樂譜叫他們彈奏,發現他們彈的特別流暢。這個道理或許和微控制器學習是一樣的吧,雖然我沒有將51微控制器所有的東西都弄清楚,但是學了這麼久的 stm32後,51 根本不成問題。事實上現在的我也應該轉向更高階的 linux 學習的,但是因為現在工作需要,而 stm32 的很多東西在 linux 中也會有,所以還是在 stm32 領域繼續深耕了,不過時間也不會太久。

熟悉我的人都知道我最喜歡《凡人修仙傳》,因此我將自己的學習之路也按照修仙界的等級進行了劃分:大一剛接觸微控制器,只是乙個凡人,後來因為完成了鬧鐘程式,算是進入了練氣期。在大三的時候完成了一小專案,算是吞了一枚築基丹,進入築基期,而築基期是人界乙個門派中最為重要的力量,也能被人稱之為前輩了,一般的工作差不多都能勝任。到了現在,因為又學習了不少新知識,算是進入了築基後期,但是要突破金丹期,也只有靠 linux來助我凝結金丹了,任重而道遠。

敢問道友是何境界?

51微控制器學習之路(2)

指令編碼格式及分類 一條指令表示計算機所完成的某種操作。它通常由操作碼和運算元兩部分組成。例如 mov a,r1 本系統有下列三種指令編碼格式 1 單位元組指令 49條 2 雙位元組指令 46條 3 三位元組指令 16條 例如 一位元組指令空操作nop的編碼格式為 兩位元組指令mov a,40h的編...

從微控制器到嵌入式

1 什麼是微控制器?微控制器是乙個控制系統,接收管腳中斷輸入,進行一些簡單的邏輯操作,對記憶體或flash進行訪問,再輸出到管腳 2 什麼是嵌入式?嵌入式有linux核心 linux核心功能有 程序管理 記憶體管理 檔案系統管理 裝置驅動 網路管理 3 微控制器和嵌入式有什麼共同點?都是靠中斷驅動,...

暑假微控制器學習之路之一

7月20日,最後一門考試考完之後,在家休息兩天,修好電腦,就開始了計畫好的微控制器深入學習計畫。鑑於本人小白有一定的基礎,因此並沒有從入門開始,而是從這學期的微控制器課程設計入手。當時因為時間問題,計畫的功能並沒有全部實現,只是簡單的實現了課程設計的最基本的要求。因此,我打算先將已經完成的從彙編換成...