STM32學(xué)習(xí)筆記--GPIO寄存器的定義
1、GPIO的寄存器按照功能可以分為以下幾類:
A、配置寄存器
B、數(shù)據(jù)寄存器
C、位寄存器
D、鎖定寄存器
2、對(duì)于GPIO端口,每個(gè)端口有16個(gè)引腳,每個(gè)引腳的模式由寄存器的四個(gè)位控制,每四位又分為兩位控制引腳配置(CNFy[1:0]),兩位控制引腳的模式及最高速度(MODEy[1:0]),其中y表示第y個(gè)引腳。配置GPIO引腳模式的一共有兩個(gè)寄存器,CRH是高寄存器,用來(lái)配置高8位引腳,還有CRL配置低八位引腳。
3、端口位設(shè)置清除寄存器(GPIOx_BSRR)
一個(gè)引腳y的輸出數(shù)據(jù)由GPIOx_BSRR寄存器位的2個(gè)位來(lái)控制分別為BRy (Bit Reset y)和BSy (Bit Set y),BRy位用于寫1清零,使引腳輸出低電平,BSy位用來(lái)寫1置1,使引腳輸出高電平。而對(duì)這兩個(gè)位進(jìn)行寫零都是無(wú)效的。
4、Cortex-M3有32根地址線,所以它的
尋址空間大小為2^32 bit=4GB。ARM公司設(shè)計(jì)時(shí),預(yù)先把這4GB的尋址空間大致地分配好了。它把地址從0x4000 0000至0x5FFF FFFF( 512MB )的地址分配給片上外設(shè)。
5、stm32f10x.h這個(gè)文件中重要的內(nèi)容就是把STM32的所有寄存器進(jìn)行地址映射。如同51單片機(jī)的頭文件一樣,stm32f10x.h像一個(gè)大表格,我們?cè)谑褂玫臅r(shí)候就是通過宏定義進(jìn)行類似查表的操作。
6、STM32總線有AHB總線、APB2總線、APB1總線
7、時(shí)鐘系統(tǒng)。
A、從時(shí)鐘頻率來(lái)說(shuō)分為告訴時(shí)鐘和低速時(shí)鐘,高速時(shí)鐘是提供給芯片主體時(shí)鐘,而低速時(shí)鐘只是提供給芯片中的RTC及獨(dú)立看門狗使用。
B、從芯片角度來(lái)說(shuō),時(shí)鐘源分為內(nèi)部時(shí)鐘與外部時(shí)鐘源,內(nèi)部時(shí)鐘是在芯片內(nèi)部RC振蕩器產(chǎn)生的,起振較快,所以時(shí)鐘在芯片剛上電的時(shí)候,默認(rèn)使用
內(nèi)部高速時(shí)鐘。而外部時(shí)鐘信號(hào)是由外部的晶振輸入的,在精度和穩(wěn)定性上都有很大優(yōu)勢(shì),所以上電之后我們?cè)偻ㄟ^軟件配置,轉(zhuǎn)而采用外部時(shí)鐘信號(hào)。
8、stm32f10x.h相當(dāng)于STC12C616AD.H其作用就是定義了寄存器與外設(shè)之間的關(guān)系,類似于一個(gè)大的查找表。
9、STM32從3.0庫(kù)開始引入了CMSIS,CMSIS是Cortex微控制器軟件接口標(biāo)準(zhǔn)(Cortex MicroController Software Interface Standard)的縮寫,這個(gè)是ARM定制的一個(gè)用于Cortex-M系列的一個(gè)標(biāo)準(zhǔn),主要是為了提供通用api接口來(lái)訪問內(nèi)核和一些片上外設(shè),提高代碼的可移植性。
CMSIS有三個(gè)層:核內(nèi)外設(shè)訪問層Core Peripheral Access Layer(CPAL),中間件訪問層Middleware Access Layer(MWAL),設(shè)備訪問層(Device Peripheral Access Layer)。
CPAL用于訪問內(nèi)核的寄存器和組件,如NVIC,調(diào)試系統(tǒng)等。該層是由ARM實(shí)現(xiàn)的。
MWAL用于對(duì)中間件的訪問,現(xiàn)在該層還未實(shí)現(xiàn)。(也不知道所謂的中間件是什么東西)。
DPAL用于定義一些硬件寄存器的地址和一些外設(shè)訪問函數(shù),由芯片制造商實(shí)現(xiàn)。
CPAL層的實(shí)現(xiàn)就是Core_cm3.c文件,DPAL層的實(shí)現(xiàn)就是system_stm32f10x.c文件(似乎還應(yīng)該加上外設(shè)的函數(shù)庫(kù))。
10、在CoreSupport中的是位于CMSIS標(biāo)準(zhǔn)的核內(nèi)設(shè)備函數(shù)層的M3核通用
的源文件core_cm3.c和頭文件core_cm3.h,它們的作用是為那些采用
Cortex-M3核設(shè)計(jì)SOC的芯片商設(shè)計(jì)的芯片外設(shè)提供一個(gè)進(jìn)入M3內(nèi)核的接
口。這兩個(gè)文件在其它公司的M3系列芯片也是相同的。
11、system_stm32f10x.c,是由ST公司提供的,遵守CMSIS標(biāo)準(zhǔn)。該文件
的功能是設(shè)置系統(tǒng)時(shí)鐘和總線時(shí)鐘
12、startup_stm32f10x_hd.s啟動(dòng)文件是任何處理器在上點(diǎn)復(fù)位之后最先運(yùn)行的一段匯編程序。在我們編寫的c語(yǔ)言代碼運(yùn)行之前,需要由匯編為c語(yǔ)言的運(yùn)行建立一個(gè)合適的環(huán)境,接下來(lái)才能運(yùn)行我們的程序。