學(xué)習(xí)一直都是不容易的,在工程師的世界里可能是更加的需要我們付出時(shí)間和精力。而學(xué)習(xí)能力在現(xiàn)在這個(gè)時(shí)代又是顯得十分的重要,相信許多燒友們對(duì)編程的學(xué)習(xí)也是十分感興趣的,或者正在學(xué)習(xí)的過程中。所有小編今天特別整理了一份滿滿的干貨給到小伙伴們學(xué)習(xí)和借鑒。
我知道現(xiàn)在有成千上萬(wàn)的資源可以“教你如何編碼”。但是,這絕對(duì)不是這里最重要的部分,也不是這篇文章的主題。重要的是你如何建立起良好的學(xué)習(xí)習(xí)慣,如何更好的吸收處理新知識(shí),時(shí)刻保持自己的學(xué)習(xí)動(dòng)力,并把注意力放在核心問題上。
如果你愿意遠(yuǎn)離你的舒適區(qū)!你一定會(huì)為學(xué)習(xí)到新知識(shí)而感到興奮,并且能獲得優(yōu)越感,久而久之,你也一定會(huì)成為一名優(yōu)秀的開發(fā)者。
我已經(jīng)有多年的執(zhí)教經(jīng)驗(yàn),當(dāng)我的學(xué)生告訴我他們沒有動(dòng)力的時(shí)候,我經(jīng)??吹揭环N現(xiàn)象,他們只執(zhí)著于最終的大目標(biāo),而忽視了每一次小小的進(jìn)步,這讓他們始終覺得離目標(biāo)很遠(yuǎn),從而導(dǎo)致挫敗感。當(dāng)我剛開始學(xué)編程的時(shí)候也有同樣的想法,不斷的和身邊的人對(duì)比,覺得他們比我優(yōu)秀太多,我永遠(yuǎn)無(wú)法達(dá)到我要的高度。
正是一直存在這樣的想法,往往忽視了自己做出的努力,即便自己輕松創(chuàng)建出一個(gè)比之前復(fù)雜的應(yīng)用程序時(shí),也不會(huì)有成就感,因?yàn)樾睦镆恢背两诤透薪?jīng)驗(yàn)的開發(fā)者的比較中。
學(xué)習(xí)如何編程是最困難的,每個(gè)人都在努力克服。本文會(huì)把重心放在學(xué)習(xí)編程時(shí)最常見的問題上:如何盡可能有效地處理新信息,如何保持動(dòng)力。
有效地處理新信息
每個(gè)人吸收新知識(shí)的方式不同,所以,在開始學(xué)習(xí)代碼之前,你首先要做的就是先學(xué)習(xí)如何學(xué)習(xí)。
很快你就會(huì)發(fā)現(xiàn),最常見的兩種學(xué)習(xí)資源就是:在線課程和語(yǔ)言文檔。除超人類的天才外,是沒人能夠在只看課程/讀純文本的情況下還能記住所有知識(shí)點(diǎn),所以每當(dāng)你在看視頻課程或閱讀文檔時(shí),感到迷茫和困惑是完全正常的,畢竟對(duì)于沒有太多知識(shí)的人來說,通過一些極客術(shù)語(yǔ)來理解代碼是蠻難的。
無(wú)論你覺得自己有多優(yōu)秀都不要忽略基礎(chǔ)知識(shí),開始學(xué)一門語(yǔ)言的時(shí)候不要跳過任何一個(gè)細(xì)節(jié),如果你一開始不注意的話,會(huì)后悔的。即便是閱讀文檔,也請(qǐng)從第一頁(yè)開始閱讀,相信我:注意細(xì)節(jié),過后會(huì)感謝今天的你。
教學(xué)是最好的學(xué)習(xí)方式,是每隔10分鐘,就停下來用自己的話解釋一下你剛剛所學(xué)到的東西,即便周圍沒有人,你可能會(huì)覺得做起來十分困難,但這種做法可以讓你立刻知道自己還不了解的知識(shí)點(diǎn)有哪些,你可以及時(shí)鞏固研究,就記下來,通過實(shí)踐編碼,會(huì)讓你記憶的更加簡(jiǎn)單深刻。
不要只聽課程和閱讀文檔,你還應(yīng)通過積極參加創(chuàng)建自己的個(gè)人項(xiàng)目,把你所學(xué)的每一個(gè)新的知識(shí)點(diǎn)都運(yùn)用上來,這聽起來似乎也不是那么簡(jiǎn)單,但你只要一直堅(jiān)持,你一定可以提高你的編程技能。
保持動(dòng)力
很多人問我日常生活中如何讓自己編寫出這么多代碼,思考了很久之后,得出以下答案:
每個(gè)人否喜歡玩游戲,不論什么類型的游戲,因?yàn)橛螒蚩梢詭Ыo你即時(shí)的滿足感,這就是動(dòng)機(jī)成因,通過編程,我也獲得到了滿足感,但編程不是游戲,沒有你想象中的容易。
設(shè)立小目標(biāo),不是因?yàn)槟悴凰歼M(jìn)取,而是因?yàn)槟悴蛔⒅馗纳疲鲆粋€(gè)當(dāng)天完成的事情待辦列表:也許只是讀一頁(yè),或者只看一個(gè)課程更或者只是編寫10行代碼,看到自己完成整個(gè)待辦事項(xiàng)清單,你會(huì)獲得滿足感,對(duì)自己的進(jìn)步更有信心?!拔乙呀?jīng)完成了今天的目標(biāo)任務(wù)”比“我只完成了2%的課程”要好得多,及時(shí)行樂是很重要的。
不斷提醒自己,你已經(jīng)走了多遠(yuǎn)。這一點(diǎn)經(jīng)常被忽視,你不會(huì)意識(shí)到自己每天都在進(jìn)步,但相信我,你只要每天都編碼(哪怕一點(diǎn)點(diǎn)),你也會(huì)越來越好。所以最好的方法是寫日記,每天用一句話來記錄自己的困惑,一個(gè)月后再回頭看看,你可以看到自己正在變得更好。
在你真正感興趣的個(gè)人項(xiàng)目上編程,這里不包含在待辦事項(xiàng)列表中,而是你真正想要建立的項(xiàng)目,也不要想到自動(dòng)駕駛汽車、機(jī)器人等等這些龐大的項(xiàng)目,可以選擇一些小項(xiàng)目,比如創(chuàng)建一個(gè)網(wǎng)站或者一個(gè)小型游戲,這種項(xiàng)目會(huì)讓你更有動(dòng)力去完成它,一旦項(xiàng)目完成,你就會(huì)有成就感。
意識(shí)到自己比想象中要優(yōu)秀。你可能會(huì)覺得你身邊的每個(gè)人知道的東西都比你多的多,這也被稱為冒名頂替者綜合征。但事實(shí)并非如此,只要你有足夠的學(xué)習(xí)動(dòng)力、足夠努力地編碼,你一定可以可以成為一名優(yōu)秀的開發(fā)人員。
要時(shí)刻牢記的事
不要和其他開發(fā)者對(duì)比。非常老套的建議,但這是至關(guān)重要的。你比你想象中的進(jìn)步更快。我下面這張照片,如果在4個(gè)月前看到這些屏幕中的代碼,我會(huì)感到害怕的。但現(xiàn)在我完全可以找出這里面犯了多少錯(cuò)誤
你比你想象的要進(jìn)步得多。每一次學(xué)習(xí)或編碼,你都在成長(zhǎng)。
每個(gè)人一開始都很迷茫,大家都是一樣的,但這并不意味著你會(huì)成為一個(gè)糟糕的程序員。你現(xiàn)在的想法只是學(xué)習(xí)過程的一部分。不久,你會(huì)回頭看看這時(shí)的你,你一定會(huì)認(rèn)同我說的!
最后如果可以,試著找一位導(dǎo)師。通過向其求教相信更有助于你克服問題并獲得新的啟發(fā)。
好的,講了這么多理論學(xué)習(xí)編程語(yǔ)言的方法,下面我們來講講如何學(xué)習(xí)STM32呢?
首先,在學(xué)習(xí)Cortex-M3時(shí),我們必須要知道必要的縮略語(yǔ)。
整理如下:
AMBA:先進(jìn)單片機(jī)總線架構(gòu) ADK:AMBA設(shè)計(jì)套件AHB:先進(jìn)高性能總線 AHB-AP:AHB訪問端口APB:先進(jìn)外設(shè)總線 ARM ARM:ARM架構(gòu)參考手冊(cè)ASIC:行業(yè)領(lǐng)域?qū)S?a target="_blank">集成電路 ATB :先進(jìn)跟蹤總線
BE8:字節(jié)不變式大端模式 CPI:每條指令的周期數(shù)
DAP:調(diào)試訪問端口 DSP:數(shù)字信號(hào)處理(器)DWT:數(shù)據(jù)觀察點(diǎn)及跟蹤 ETM:嵌入式跟蹤宏單元FPB:閃存地址重載及斷點(diǎn) FSR:fault狀態(tài)寄存器
HTM:Core Sight AHB跟蹤宏單元ICE:在線仿真器 IDE:集成開發(fā)環(huán)境
IRQ:中斷請(qǐng)求(通常是外中斷請(qǐng)求)ISA:指令系統(tǒng)架構(gòu) ISR:中斷服務(wù)例程ITM:儀器化跟蹤宏單元
JTAG:連接點(diǎn)測(cè)試行動(dòng)組(一個(gè)關(guān)于測(cè)試和調(diào)試接口的標(biāo)準(zhǔn))LR:連接寄存器
LSB:最低有效位
MSB:最高有效位LSU:加載存儲(chǔ)單元MCU:微控制器單元
MPU:存儲(chǔ)器保護(hù)單元
MMU:存儲(chǔ)器管理單元MSP:主堆棧指針NMI:不可屏蔽中斷NVIC:嵌套向量中斷控制器PC:程序計(jì)數(shù)器PPB:私有外設(shè)總線
Cortex-M3芯片簡(jiǎn)介
1、芯片的基本結(jié)構(gòu)如下圖
2、關(guān)于ARMv7的知識(shí)了解
在這個(gè)版本中,內(nèi)核架構(gòu)首次從單一款式變成3種款式。
款式A:設(shè)計(jì)用于高性能的“開放應(yīng)用平臺(tái)”——越來越接近電腦了
款式R:用于高端的嵌入式系統(tǒng),尤其是那些帶有實(shí)時(shí)要求的——又要快又要實(shí)時(shí)。
款式M:用于深度嵌入的,單片機(jī)風(fēng)格的系統(tǒng)中。
介紹A:用于高性能的“開放應(yīng)用平臺(tái)”,應(yīng)用在那些需要運(yùn)行復(fù)雜應(yīng)用程序的處理器。支持大型嵌入式操作系統(tǒng)。
R:用于高端的嵌入式系統(tǒng),要求實(shí)時(shí)性的。
M:用于深度嵌入的、單片機(jī)風(fēng)格的系統(tǒng)中。
3、Cortex-M3處理器的舞臺(tái)
高性能+高代碼密度+小硅片面積,使得CM3大面積地成為理想的處理平臺(tái),主要應(yīng)用在以下領(lǐng)域:
(1)低成本單片機(jī)(2)汽車電子(3)數(shù)據(jù)通信(4)工業(yè)控制(5)消費(fèi)類電子產(chǎn)品
4、Cortex-M3的簡(jiǎn)化圖
5、寄存器組
處理器擁有R0-R15的寄存器組,其中R13最為堆棧指針SP,SP有兩個(gè),但是同一時(shí)刻只能有一個(gè)可以看到,這就是所謂的“banked”寄存器。
a、R0-R12都是 32位通用寄存器,用于數(shù)據(jù)操作。但是注意:絕大多數(shù) 16位Thumb指令只能訪問R0-R7,而 32位 Thumb-2指令可以訪問所有寄存器。
b、Cortex-M3擁有兩個(gè)堆棧指針,然而它們是 banked,因此任一時(shí)刻只能使用其中的一個(gè)。
6、Cortex-M3的簡(jiǎn)評(píng)
a、高性能
許多指令都是單周期的——包括乘法相關(guān)指令。并且從整體性能上,Cortex-M3比得過絕大多數(shù)其它的架構(gòu)。
指令總線和數(shù)據(jù)總線被分開,取值和訪內(nèi)可以并行不悖 。
Thumb-2的到來告別了狀態(tài)切換的舊世代,再也不需要花時(shí)間來切換于 32位 ARM狀態(tài)和16位Thumb狀態(tài)之間了。這簡(jiǎn)化了軟件開發(fā)和代碼維護(hù),使產(chǎn)品面市更快。
Thumb-2指令集為編程帶來了更多的靈活性。許多數(shù)據(jù)操作現(xiàn)在能用更短的代碼搞定,這意味著 Cortex-M3的代碼密度更高,也就對(duì)存儲(chǔ)器的需求更少。
取指都按 32位處理。同一周期最多可以取出兩條指令,留下了更多的帶寬給數(shù)據(jù)傳輸。
Cortex-M3的設(shè)計(jì)允許單片機(jī)高頻運(yùn)行(現(xiàn)代半導(dǎo)體制造技術(shù)能保證 100MHz以上的速度)即使在相同的速度下運(yùn)行,CM3的每指令周期數(shù)(CPI)也更低,于是同樣的 MHz下可以做更多的工作;另一方面,也使同一個(gè)應(yīng)用在 CM3上需要更低的主頻。
b、先進(jìn)的中斷處理功能
內(nèi)建的嵌套向量中斷控制器支持240條外部中斷輸入。向量化的中斷功能大大減少了中斷延遲,因?yàn)椴辉谛枰浖ヅ袛嘀袛嘣?。中斷的嵌套也是在硬件水平上?shí)現(xiàn)的,不需要軟件代碼來實(shí)現(xiàn)。
Cortex-M3在進(jìn)入異常服務(wù)例程時(shí),自動(dòng)壓棧了 R0-R3, R12, LR, PSR 和PC,并且在返回時(shí)自動(dòng)彈出它們,這多清爽!既加速了中斷的響應(yīng),也再不需要匯編語(yǔ)言代碼了
NVIC支持對(duì)每一路中斷設(shè)置不同的優(yōu)先級(jí),使得中斷管理極富彈性。最粗線條的實(shí)現(xiàn)也至少要支持 8級(jí)優(yōu)先級(jí),而且還能動(dòng)態(tài)地被修改。
優(yōu)化中斷響應(yīng)還有兩招,它們分別是“咬尾中斷機(jī)制”和“晚到中斷機(jī)制”。
有些需要較多周期才能執(zhí)行完的指令,是可以被中斷-繼續(xù)的——就好比它們是一串指令一樣。
這些指令包括加載多個(gè)寄存器(LDM),存儲(chǔ)多個(gè)寄存器(STM),多個(gè)寄存器參與的PUSH,以及多個(gè)寄存器參與的 POP。
除非系統(tǒng)被徹底地鎖定,NMI(不可屏蔽中斷)會(huì)在收到請(qǐng)求的第一時(shí)間予以響應(yīng)。對(duì)很多安全-關(guān)鍵(safety-critical)的應(yīng)用,NMI都是必不可少的(如化學(xué)反應(yīng)即將失控時(shí)的緊急停機(jī))。
-
STM32
+關(guān)注
關(guān)注
2270文章
10918瀏覽量
356812 -
編碼
+關(guān)注
關(guān)注
6文章
952瀏覽量
54891 -
Cortex-M3
+關(guān)注
關(guān)注
9文章
270瀏覽量
59526
原文標(biāo)題:想要從編程小白成為達(dá)人,這些你必須知道?。ǜ絊TM32學(xué)習(xí)指南)
文章出處:【微信號(hào):elecfans,微信公眾號(hào):電子發(fā)燒友網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論