STM32學(xué)習(xí)體會
因為暑假的時候?qū)W了MSP430,所以現(xiàn)在學(xué)STM32讓我感覺很容易就上手了,相比51,主要是初始化更加繁瑣了,沒辦法嘛,功能強(qiáng)大,寄存器就多,多了配置起來就復(fù)雜一些。
本文引用地址:http://www.ex-cimer.com/article/201612/324395.htm個人感覺一開始還是走寄存器路線,因為只有學(xué)懂了底層的東西才能更好的理解它的功能是怎么實現(xiàn)的,才能從中找出來捷徑。以后的話貌似還可以走庫函數(shù)路線,那樣可以大大的縮短開發(fā)周期。
幾乎所有的單片機(jī)開始都是在介紹IO口,但是我感覺在此之前應(yīng)該學(xué)習(xí)一下時鐘,STM32的時鐘使能分的HH特別細(xì),每一個外設(shè)都有一個對應(yīng)的時鐘使能位,還有相對應(yīng)的復(fù)位位,基本上都在RCC->APB1ENR,RCC->APB2ENR兩個寄存器里面,幾乎初始化每一個外設(shè)之前,包括IO口,都要使能它的時鐘,STM32還有一個后背區(qū),當(dāng)單片機(jī)復(fù)位的時候,這個區(qū)域是不會復(fù)位的,它的RTC模塊只要有后備電源,即使單片機(jī)關(guān)機(jī)了,也可以給你提供大概136年的實時時鐘計時!
下面就是IO口了,它的IO口有8種模式,但是常用的就那么幾種,推拉式輸出,推拉式輸入,復(fù)用功能等等,每四位控制一個IO口,最常用的就是0X8,0X3。使能了時鐘,設(shè)置好模式,就可以使用它的IO了,輸出電平的高低就是控制ODR,輸入就是讀IDR,但是這兩個寄存器只能整體訪問。但是STM32所有的位帶操作為我們可以像操作51一樣操作它的IO提供了可能,例如,如果要控制PA1這一位,只要對PAout(1),PAin(1)操作就行了,免去了數(shù)據(jù)的位運(yùn)算!還有一點(diǎn)就是注意特殊IO,因為有的IO復(fù)位的時候默認(rèn)是復(fù)用功能,如和JTAG有關(guān)的幾個IO,如果你想把它當(dāng)成普通IO使用,先把JTAG禁用了之后就OK了。
再后面就是外部中斷了,它的每個IO都可以提供中斷功能,對應(yīng)著一條中斷線,但中斷線是有復(fù)用的,至于是哪一種中斷,就要看它的中斷標(biāo)志寄存器了,如PA1,PB1,PC1,PD1,PE1共用EXTI1這一條中斷線,幾條中斷線又共用一個中斷向量,當(dāng)然,有的是獨(dú)享的。如RTC的秒中斷和鬧鐘中斷還有溢出中斷,共用了RTCIRQChannel這個中斷向量,進(jìn)去中斷服務(wù)程序之后,通過判斷中斷標(biāo)志寄存器的哪一位置位了,就可以知道是哪個中斷了。但是,中斷標(biāo)志要軟件清零!這點(diǎn)很重要。STM32還有一點(diǎn)很人性化,就是中斷向量可以重新映射!雖然有些限制,但還是很人性化的,給你畫PCB的時候提供了更多選擇!至于中斷的配置,按部就班的去弄就好了!
后面還玩了看門狗,這個可以防止程序跑飛,不過目前對我們來說,作用不大。不過學(xué)過MSP430的朋友要注意,MSP430的看門狗復(fù)位時默認(rèn)開啟,而STM32的默認(rèn)值也是關(guān)閉!如果對它不熟悉,就先別用,因為狗餓了就會咬你的。
后面玩了一下TFTLCD,得說明一下,觸摸屏,它的“觸摸”和“屏”是分開的,有不同的控制器,要分別編寫驅(qū)動程序。我目前只弄了屏幕顯示,這種彩屏最煩人的就是初始化,我的這塊控制器有200多命令,所以告訴你一個簡便方法,復(fù)制粘貼,然后做細(xì)節(jié)改動,因為我們不是做屏幕開發(fā)的,沒必要去寫這個初始化。之后就簡單了,單點(diǎn)操作的話,先寫入坐標(biāo),然后寫入RGB的值,我的屏幕是565格式,就是R有五位控制,G有6位控制,B有5位控制,值越大,顏色越深!唯一煩人的就是他沒有字庫,要自己制作字庫,建議把基本的ASCII中的字符做成字庫存在頭文件中。因為很少用漢字,而且漢字量實在是太大了!用PC2LCD取模軟件制作。
昨天買了一塊OLED屏幕,它是自發(fā)光的,所以看起來很舒服,而且亮度可以軟件調(diào)控,大概只有硬幣大小,就花了我40塊錢,不過分辨率還可以,128×64,用過12864LCD的可以想象一下,同樣的像素點(diǎn),縮小到硬幣大小,而且還是自發(fā)光,效果確實很漂亮。它的操作也不難,支持5種接口(這個要看控制器型號),有8080,6080,三線SPI,四線SPI,IIC,不過SPI模式下不能進(jìn)行讀操作。在8080控制模式下,讀的時候最好來一次假讀。同樣的,初始化去復(fù)制粘貼就好了!然后每次寫入都要求是整個字節(jié)寫入。
時間原因,先寫到這里,定時器改天再寫。
評論