1. 程式人生 > >STM32F4——GPIO基本應用及複用

STM32F4——GPIO基本應用及複用

IO基本應用

一、IO基本結構:

    針對STM32F4077IO,分別為GPIOA~GPIOG,每組IO16IO口,則有112IO口。其中IO口的基本結構如下:

二、工作方式:

    STM32F4工作模式有8種,其中4中輸入模式,4種輸出模式,分別為:輸入浮空、輸入上拉、輸入下拉、模擬模式、開漏輸出、開漏複用輸出、推輓輸出、推輓複用輸出。

    1、輸入模式:

        在輸入浮空模式下,電路既不上拉也不下拉,通過施密特觸發器送到輸入資料暫存器在送入到CPU。輸入上拉和下拉模式分別是在電路中經過上拉和下拉後通過施密特觸發器送入的CPU,模擬模式下,施密特觸發器關閉後訊號直接通過模擬通道至片上外設。

    2、輸出模式:

        開漏輸出模式下,CPU傳送輸入直接或間接的控制輸出資料暫存器,通過輸出控制電路,當訊號為1時,NMOS管是關閉的,所以IO電平就是受上下拉電路的控制,當訊號為0時,NMOS管導通輸出就是下拉低電平;推輓輸出模式下,訊號為1時,P-MOS管導通,N-MOS管截止,輸出就是上拉高電平,當訊號為0時,P-MOS管截止,N-MOS管導通,輸出就是下拉低電平;對於開漏複用和推輓複用模式與開漏和推輓的不同之處就是在於訊號的開源不同,開漏複用和推輓複用的訊號來源是片上的外設模組。

三、相關暫存器

    每一個通用的IO埠都包括432位的配置暫存器(GPIOx_MODER

GPIOx_OTYPER、PIOx_OSPEEDR和GPIOx_PUPDR),232位的資料暫存器(GPIOx_IDRGPIOx_ODR),132位置位/復位暫存器(GPIOx_BSRR),132位鎖定暫存器(GPIOx_LCKR)和232位複用功能選擇暫存器(GPIOx_AFRL)。下面對其進行介紹。

    1、工作模式配置:1、埠模式(GPIOx_MODER):用來配置埠的模式為輸入、輸出、複用和模擬模式。2、埠型別(GPIOx_OTYPER):用來配置暫存器的模式為輸出推輓還是輸出開漏。3、埠速度(PIOx_OSPEEDR):用來配置埠的資訊傳輸速率。4、埠上下拉(GPIOx_PUPDR

):用來配置埠的無上下拉、上拉、下拉和保留模式。

    2、電平配置:1、輸入資料(GPIOx_IDR):用到其低16位,分別對應該組IO口的一個電平狀態。2、輸出資料(GPIOx_ODR):與輸入資料暫存器相似的功能。3、置位和復位(GPIOx_BSRR):與前兩個不同的是置位和復位暫存器用到了32位,低16為設定為1時,用於置1相應位,高16位設定為1時,用於置0相應位,而低16位和高16位設定為0時不影響原值。

    3、複用功能配置:下面做相應說明。

IO複用

一、複用背景:

    由於考慮到IO口的有限,為了節省IO資源,同時為了更好的協調IO之間的工作,所以有必要在適當的時候給IO口賦予不同的功能,一個IO口在不同的時候可以承擔不同的工作,這就是IO的複用功能。

二、複用原理:

    每一個IO口都會接有一個選擇器,這個選擇器經過相應暫存器(GPIOx_AFRHGPIOx_AFRL)的配置之後就可以做不同的功能的應用,這個暫存器就是GPIOx_AFRHGPIOx_AFRL

三、暫存器配置:

    每一組IO口都有一個AFRL和一個AFRH暫存器,他們都是32位的暫存器,其中每4位配置一個IO口的功能,則對應的GPIOx_AFRL就用來配置第0-7IO口,GPIOx_AFRH就用來配置第8-15IO口。每4位配置一個IO口,則4位資料的相關取值就會有對應的相應功能。如此一來就做好了相關配置。

綜述:

    這些相關的配置過程會用到相應的函式和相應變數,熟練使用相關的函式,同時對函式的功能瞭解後才會應用的更加得心應手,同時也可以寫自己的一些相關函式來進行操作,當然也可以直接操作相關的暫存器。