0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

學(xué)習(xí)編程時(shí)最常見的問題:如何盡可能有效地處理新信息,如何保持動(dòng)力

lPCU_elecfans ? 來源:未知 ? 作者:李倩 ? 2018-07-31 10:55 ? 次閱讀

學(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ī))。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 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)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    為什么會(huì)出現(xiàn)電壓降 如何實(shí)現(xiàn)盡可能低的電壓降

    高速電流波形會(huì)導(dǎo)致集成電路電壓下降。如果足夠嚴(yán)重,電壓降可能會(huì)重置微處理器或?qū)е聹y(cè)試結(jié)果出現(xiàn)異常。本文解釋了為什么會(huì)出現(xiàn)電壓降,提供了多種方法來通過選擇最佳負(fù)載引線和電源以及使用本地旁路來實(shí)現(xiàn)盡可能低的電壓降。
    發(fā)表于 02-06 10:02 ?6911次閱讀
    為什么會(huì)出現(xiàn)電壓降 如何實(shí)現(xiàn)<b class='flag-5'>盡可能</b>低的電壓降

    哪里可以買到盡可能高頻率的無(wú)線能量發(fā)射接收模塊

    哪里可以買到盡可能高頻率的無(wú)線能量發(fā)射接收模塊。哪里可以買到盡可能高頻率的無(wú)線能量發(fā)射接收模塊。哪里可以買到盡可能高頻率的無(wú)線能量發(fā)射接收模塊。哪里可以買到盡可能高頻率的無(wú)線能量發(fā)射接
    發(fā)表于 12-05 22:48

    請(qǐng)問哪位大神可以推薦8位PIC單片機(jī)或者16位的單片機(jī),要求端口盡可能多些的?

    請(qǐng)問各位,最近老師要我選個(gè)8位PIC單片機(jī)或者16位的單片機(jī),要求端口盡可能多些,我之前也沒怎么接觸過單片機(jī)這塊的內(nèi)容,感覺很棘手,他還給出了一種開發(fā)工具PICSTART-PLUS開發(fā)編程器,但是我
    發(fā)表于 07-03 03:44

    請(qǐng)問為什么低噪聲放大器的第一級(jí)要盡可能的放大?

    為什么低噪聲放大器的第一級(jí)要盡可能的放大?
    發(fā)表于 08-24 07:15

    如何確保盡可能高效地測(cè)試開關(guān)穩(wěn)壓器?

    問題:如何確保盡可能高效地測(cè)試開關(guān)穩(wěn)壓器?
    發(fā)表于 03-01 08:50

    STM32F756 AES加密不可能有同樣的輸出

    項(xiàng)目中需要pc端使用同樣的AES算法,密鑰和初始向量加密,但是STM32中使用跟加密協(xié)處理器配套的函數(shù),我現(xiàn)在直覺pc端的AES實(shí)現(xiàn)跟硬件端同樣輸入不可能有同樣的輸出,請(qǐng)問各位大神有沒有遇到這種情況怎么解決,或者哪位有pc端配套的AEScbc算法,在此謝過!
    發(fā)表于 05-21 14:33

    數(shù)據(jù)采集系統(tǒng)信號(hào)路徑中發(fā)現(xiàn)的最常見的濾波器是低通濾波器

    編程二階低通濾波器電路。在數(shù)據(jù)采集系統(tǒng)信號(hào)路徑中發(fā)現(xiàn)的最常見的濾波器是低通濾波器。這種類型的濾波器通常用于減少A / D轉(zhuǎn)換器混疊誤差。如果通過多路復(fù)用器向A / D轉(zhuǎn)換器施加多個(gè)信號(hào),則每個(gè)信號(hào)源可能有其自己的一組濾波器要求
    發(fā)表于 08-21 08:53

    緩沖VDAC輸出損失如何盡可能的減少?

    ,但是連接后電壓不會(huì)下降到1.9V以下。JRK直接從電位器工作。我想在PSoC和控制器之間放置一個(gè)運(yùn)放來緩沖這個(gè),但是我想盡可能少的損失,盡可能保持輸出的精確性。我需要一個(gè)DIL包,這樣我就可以剝離
    發(fā)表于 10-08 12:43

    是否有任何選項(xiàng)可以更改NFC的場(chǎng)功率以使讀取盡可能節(jié)能?

    我需要讓 ST25R3916 讀取盡可能節(jié)能。我正在搜索文檔,但我只看到這個(gè)穩(wěn)壓器 (0x2C)。是否有任何選項(xiàng)可以更改 NFC 的場(chǎng)功率以使讀取盡可能節(jié)能?NFC 標(biāo)簽將始終位于固定范圍內(nèi)的固定位置。重要提示:我們不是在談?wù)摍z測(cè)卡——因?yàn)殡娙輽z測(cè)已經(jīng)足夠好了,但只是在讀
    發(fā)表于 02-02 07:43

    為什么在MCU中要盡可能少用浮點(diǎn)數(shù)運(yùn)算?

    為什么在MCU中要盡可能少用浮點(diǎn)數(shù)運(yùn)算
    發(fā)表于 10-09 08:06

    為什么在MCU中要盡可能少用全局變量?

    為什么在MCU中要盡可能少用全局變量
    發(fā)表于 10-11 07:07

    為什么低噪聲放大器的第一級(jí)要盡可能的放大呀?

    為什么低噪聲放大器的第一級(jí)要盡可能的放大?
    發(fā)表于 11-21 08:01

    UPS蓄電池的設(shè)計(jì)為什么要讓電池保持盡可能的溫度

    在UPS 的實(shí)際應(yīng)用中,溫度對(duì)電池的自然老化過程有很大影響。詳細(xì)的實(shí)驗(yàn)數(shù)據(jù)表明溫度每上升 5℃,電池壽命就下降 10%,所以 UPS 蓄電池的設(shè)計(jì)應(yīng)讓電池保持盡可能的溫度。
    發(fā)表于 08-09 15:22 ?1234次閱讀

    Watson Works提供了數(shù)據(jù)驅(qū)動(dòng)的見解,以幫助雇主在工作場(chǎng)所重入

    IBM區(qū)塊鏈和生態(tài)系統(tǒng)認(rèn)知應(yīng)用高級(jí)副總裁Bob Lord說:“我們?cè)O(shè)計(jì)了Watson Works,以幫助企業(yè)盡可能有效地應(yīng)對(duì)持續(xù)的COVID-19健康危機(jī) 。
    的頭像 發(fā)表于 09-10 16:06 ?2250次閱讀

    如何測(cè)量運(yùn)算放大器的輸入電容以盡可能降低噪聲

    這些問題。 運(yùn)算放大器被廣泛用于各種電子電路中。它們用于小電壓的放大,以進(jìn)一步執(zhí)行信號(hào)處理。煙霧探測(cè)器、光電二極管跨阻放大器、醫(yī)療器械,甚至工業(yè)控制系統(tǒng)等應(yīng)用都需要盡可能低的運(yùn)算放大器輸入電容,因?yàn)檫@會(huì)影響噪聲增益(
    的頭像 發(fā)表于 04-11 03:45 ?712次閱讀
    如何測(cè)量運(yùn)算放大器的輸入電容以<b class='flag-5'>盡可能</b>降低噪聲