|
知其然,知其所以然;STM32cube圖形配置生成代碼的方式固然方便,但是對(duì)我來(lái)說(shuō),了解這些函數(shù)的誕生過(guò)程是心中揮之不去的念想,于是我暫時(shí)停下了錄播課程,想要從最基礎(chǔ)的知識(shí)來(lái)重新認(rèn)知STM32。
我重新拿起了模電,復(fù)習(xí)場(chǎng)效應(yīng)晶體管的知識(shí),以便讀懂GPIO框圖,知曉推挽輸出與開(kāi)漏輸出的概念;從資料上看到了芯片內(nèi)部劃分的4GB地址空間以及位于block0的Flash、block1的Sram、Block2的片上外設(shè)。寄存器,這個(gè)聽(tīng)了許久的名詞,第一次清晰地認(rèn)知到它的定義:已分配好地址、具有特殊功能的存儲(chǔ)空間。從GPIOB的地址0x40010c0c出發(fā),體會(huì)到定義指針變量指向寄存器地址,通過(guò)指針操作改變寄存器值。再到定義32位無(wú)符號(hào)型結(jié)構(gòu)體變量,將結(jié)構(gòu)體數(shù)組的首位成員與片上外設(shè)基地址對(duì)應(yīng),從而以結(jié)構(gòu)體數(shù)組的形式存儲(chǔ)N個(gè)寄存器,通過(guò)_>符號(hào)訪問(wèn)成員的方式修改其中某個(gè)寄存器的值,將此過(guò)程作為自定義函數(shù)的內(nèi)部操作,完成時(shí)鐘初始化,一個(gè)庫(kù)函數(shù)雛形由此誕生?赐赀@些知識(shí)的過(guò)程略顯痛苦,有許多艱澀難懂的知識(shí),但卻讓我有數(shù)次豁然開(kāi)朗的感覺(jué),心中不禁為標(biāo)準(zhǔn)庫(kù)函數(shù)中代碼的嚴(yán)謹(jǐn)感到震撼。
翻閱參考手冊(cè)的過(guò)程解決了不少疑惑,也留下了許多無(wú)法理解的問(wèn)題,我想,查閱資料將無(wú)法理解變?yōu)榭梢岳斫獾倪^(guò)程,這便是進(jìn)步的見(jiàn)證。如果時(shí)間允許,我還會(huì)如本周一樣,用寄存器或者標(biāo)準(zhǔn)庫(kù)開(kāi)發(fā)的方式去試驗(yàn)自己曾經(jīng)學(xué)過(guò)的知識(shí),這個(gè)過(guò)程或許會(huì)很漫長(zhǎng),但我有充足的信心堅(jiān)持下去。我始終認(rèn)為,了解寄存器開(kāi)發(fā)會(huì)提升對(duì)單片機(jī)的認(rèn)知程度,熟悉了最根本的原理,未來(lái)出現(xiàn)新穎的工具也會(huì)更加得心應(yīng)手。
課程已然過(guò)半,希望未來(lái)的一個(gè)月每一天都不曾辜負(fù)初衷。
|
|