上課不聽講下課來補(bǔ)習(xí)系列之-玩轉(zhuǎn)單片機(jī)STM8(二)
現(xiàn)在學(xué)習(xí)STM8,由于ST已經(jīng)提供標(biāo)準(zhǔn)驅(qū)動(dòng)庫函數(shù),對(duì)C語言能力要求已經(jīng)很弱了,只要上過大學(xué)C語言課程,都可以進(jìn)行編程。
但是我建議大家把C語言學(xué)深點(diǎn)。它的核心就是指針,玩轉(zhuǎn)指針,就玩懂了C語言。它的其他功能和其他語言沒有任何差別。只是邏輯控制而已。能把C的指針真正弄懂,你還不得不學(xué)習(xí)一下機(jī)器語言,萬變不離其宗。見多識(shí)廣,千萬不要懷疑自己大腦的記憶能力,也不要認(rèn)為多學(xué)會(huì)學(xué)混,我的經(jīng)驗(yàn)是,學(xué)得越多,只會(huì)讓你你看得更明白。
STM8系統(tǒng)的機(jī)器指令的長(zhǎng)度是8位的。固定長(zhǎng)度,你可以大致看看每個(gè)Bit是什么意思。這都是工程師精確設(shè)計(jì)的,也是人設(shè)計(jì)的。別人能做到的,你為什么不行?多問問自己。
機(jī)器指令的介紹,一定會(huì)花大篇幅介紹尋址。你可以想象,機(jī)器世界里,你的資源,其實(shí)只有內(nèi)存和寄存器。內(nèi)存是靠地址的,才能知道訪問的是哪一塊,而寄存器就是靠唯一的名字訪問,當(dāng)然外部設(shè)備的地址,也是靠地址訪問。所以可以推斷,機(jī)器指令手冊(cè),必須介紹,如何把寄存器的內(nèi)容搬移到內(nèi)存,或者如何把內(nèi)存特定地址的內(nèi)容搬移到寄存器。更有可能你是期望把直接的一個(gè)數(shù)字放入寄存器。等等的各種組合。不是任意一條連線都是被允許的,一般都不會(huì)支持直接把一條內(nèi)存,搬移到另一條內(nèi)存。中間需要寄存器暫存一下。等等的規(guī)律,你讀多了自然會(huì)懂。
不過上手STM8不需要懂這些,一樣可以玩。它內(nèi)置bootROM,一啟動(dòng),當(dāng)跳進(jìn)你的main函數(shù)時(shí),該做的初始化已經(jīng)完成,你直接可以開始操作GPIO了,clock如果沒有額外需要,不需要配置,內(nèi)置的16MHz的晶振,默認(rèn)8分頻,2MHz用來跑core,也就是運(yùn)行你的程序。STM8L151K4T6最小系統(tǒng)板,我會(huì)提供一個(gè)最小的工程文件,里面包含一個(gè)操作GPIO的代碼,也就是讓開發(fā)板上的 LED燈點(diǎn)亮,并且閃爍?;镜倪壿嬍抢撸徒惶?,中間加延時(shí),這里的延時(shí),用的最簡(jiǎn)單的的死循環(huán)delay,代碼邏輯簡(jiǎn)單,就是不夠環(huán)保。死循環(huán)是靠電耗換來的,但是這種代碼有時(shí)候也是必要的,上MHz的CPU,運(yùn)行每條指令都是ns級(jí)別的,如果你需要的delay也是ns級(jí)別的,那么死循環(huán)確實(shí)就是最好的選擇。