上課不聽講下課來補習(xí)系列之-玩轉(zhuǎn)單片機STM8(一)
最初從單片機學(xué)習(xí)整個計算機系統(tǒng)是個非常正常的階梯學(xué)習(xí)方法。因為直到今天,計算機系統(tǒng)的那些事,也沒逃離這個最基礎(chǔ)的架構(gòu)?上耶(dāng)年直接跳過了這個過程,直接從intel 486學(xué)起的,那時每天帶著無數(shù)的疑問在艱難的前行。
單片機不一定要學(xué)習(xí)51,其實隨便選一家都是一樣的。從實際出發(fā)要選,便宜的,外圍器件少的,里面功能的,所以為大家挑選了STM8L。
STM8L是個8位單片機,我在論壇中的確看到一些小兄弟在問8位是怎么回事?我至少欣慰這位兄弟確實在思考。通常我說的8位是指CPU計算時,具體點說,不如說加法,是指兩個8位二進(jìn)制數(shù)相加的能力。同理,32位,就是32位二進(jìn)制數(shù)相加。
另外,也是最難的部分,這8位單片機的尋范圍可不一定是8位的,這點要注意。尋址范圍,聽不懂?不如說是地址范圍。想象一下,8根地址線,每根線上用電壓高或者低表示1和0,那么這8根線,一共能表示多少個數(shù)字,你可以一個個數(shù),當(dāng)然最好是計算,2的8次方種組合。那也就算256個數(shù)字,每個數(shù)字表示一個地址訪問一個字節(jié)的數(shù)據(jù),也就只能訪問256個字節(jié)。這個空間太小了。所以意法半導(dǎo)體是不會如此設(shè)計的,那就增加地址線,增到16根地址線,2的16次方,等于65536個地址。我記得有門課程《計算機原理》,本是本很實用的書,可惜老師講的太爛,毫無吸引力。
65536是64KB,對于STM8L151K4T6,擁有16KB flash,以及2KB ram是足夠?qū)ぶ妨。單片機的整個地址空間通常很簡單,就是一個連續(xù)的線性空間0x0000~0xFFFF。只是其中分散著一塊塊的內(nèi)存,有的是flash,有的是ram,有的是register set,有的是ROM。僅此而已,別以為有多么復(fù)雜。
Flash和Ram是存儲代碼和數(shù)據(jù),包括堆棧。
Registers就是軟件控制外設(shè)的唯一的接口。寫驅(qū)動程序就是和這些寄存器打交道。每家芯片的寄存器的設(shè)計都不同,你需要閱讀廠商的大量資料,一般是英文的。
慶幸的是ST發(fā)布了標(biāo)準(zhǔn)外設(shè)庫函數(shù),使你不再需要關(guān)心寄存器細(xì)節(jié)。但如果你是單片機初學(xué)者,我建議閱讀標(biāo)準(zhǔn)外設(shè)庫代碼,以及閱讀芯片手冊。當(dāng)你閱讀到一定量以后,你會找到市面上所有芯片的共性,以及明白他們設(shè)計的優(yōu)缺點。做到心中有數(shù),甚至不看手冊,就能八九不離十的猜到任意芯片的寄存器設(shè)計,這就到了,驅(qū)動程序最高境界。
編輯:admin 最后修改時間:2018-05-19