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