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