STM32學(xué)習(xí)筆記1 IO口學(xué)習(xí)
STM32的IO口可以由軟件配置成8種模式:
1,輸入浮空
2,輸入上拉
3,輸入下拉
4,模擬輸入
5,開(kāi)漏輸出
6,推挽輸出
7,推挽復(fù)用功能
8,開(kāi)漏復(fù)用功能
每個(gè)IO口可以自由編程,單IO口寄存器必須要按32位字被訪問(wèn)。
這里就是寄存器不能位操作咯
STM32的每個(gè)IO端口都有7個(gè)寄存器來(lái)控制。他們分別是:配置模式的2個(gè)32位的端口配置寄存器CRL和CRH;2個(gè)32位的數(shù)據(jù)寄存器IDR和ODR;1個(gè)32位的置位/復(fù)位寄存器BSRR;一個(gè)16位的復(fù)位寄存器BRR;1個(gè)32位的鎖存寄存器LCKR;這里我們僅介紹常用 的幾個(gè)寄存器,我們常用的IO端口寄存器只有4個(gè):CRL、CRH、IDR、ODR。
STM32的CRL控制著每個(gè)IO端口(A~G)的低8位的模式。每個(gè)IO端口的位占用CRL的4個(gè)位,高兩位為CNF,低兩位為MODE。這里我們可以記住幾個(gè)常用的配置,比如0X4表示模擬輸入模式(ADC用)、0X3表示推挽輸出模式(做輸出口用,50M速率)、0X8表示上/下拉輸入模式(做輸入口用)、0XB表示復(fù)用輸出(使用IO口的第二功能,50M速率)。
CRH的作用和CRL完全一樣,只是CRL控制的是低8位輸出口,而CRH控制的是高8位輸出口。
IDR是一個(gè)端口輸入數(shù)據(jù)寄存器,只用了低16位。該寄存器為只讀寄存器,并且只能以16位的形式讀出。讀出的值為對(duì)應(yīng)IO口的狀態(tài)。
ODR是一個(gè)端口輸出數(shù)據(jù)寄存器,也只用了低16位。該寄存器雖然為可讀寫(xiě),但是從該寄存器讀出來(lái)的數(shù)據(jù)都是0。只有寫(xiě)是有效的。其作用就是控制端口的輸出。
在配置STM32外設(shè)的時(shí)候,任何時(shí)候都要先使能該外設(shè)的時(shí)鐘!APB2ENR是APB2總線上的外設(shè)時(shí)鐘使能寄存器